public async Task <string> TranslateAsync(string sourceText, string desLang, string srcLang) { if (sourceText == "" || desLang == "" || srcLang == "") { errorInfo = "Param Missing"; return(null); } // 原文 string q = HttpUtility.UrlEncode(sourceText); string retString; string salt = CommonFunction.RD.Next(100000).ToString(); string url = "https://tmt.tencentcloudapi.com/?"; // 签名,参数使用未URL编码的值 var sb = new StringBuilder() .Append("Action=TextTranslate") .Append("&Nonce=").Append(salt) .Append("&ProjectId=0") .Append("&Region=ap-shanghai") .Append("&SecretId=").Append(SecretId) .Append("&Source=").Append(srcLang) .Append("&SourceText=").Append(sourceText) .Append("&Target=").Append(desLang) .Append("&Timestamp=").Append(CommonFunction.GetTimeStamp()) .Append("&Version=2018-03-21"); string req = sb.ToString(); HMACSHA1 hmac = new HMACSHA1() { Key = Encoding.UTF8.GetBytes(SecretKey) }; byte[] data = Encoding.UTF8.GetBytes("GETtmt.tencentcloudapi.com/?" + req); var result = hmac.ComputeHash(data); hmac.Dispose(); // 请求参数,参数使用URL编码后的值 sb = new StringBuilder() .Append("Action=TextTranslate") .Append("&Nonce=").Append(salt) .Append("&ProjectId=0") .Append("&Region=ap-shanghai") .Append("&SecretId=").Append(SecretId) .Append("&Source=").Append(srcLang) .Append("&SourceText=").Append(q) .Append("&Target=").Append(desLang) .Append("&Timestamp=").Append(CommonFunction.GetTimeStamp()) .Append("&Version=2018-03-21") .Append("&Signature=").Append(HttpUtility.UrlEncode(Convert.ToBase64String(result))); req = sb.ToString(); var hc = CommonFunction.GetHttpClient(); try { retString = await hc.GetStringAsync(url + req); } catch (System.Net.Http.HttpRequestException ex) { errorInfo = ex.Message; return(null); } catch (TaskCanceledException ex) { errorInfo = ex.Message; return(null); } TencentOldTransOutInfo oinfo = JsonConvert.DeserializeObject <TencentOldTransOutInfo>(retString); if (oinfo.Response.Error == null) { //得到翻译结果 return(oinfo.Response.TargetText); } else { errorInfo = "ErrorID:" + oinfo.Response.Error.Value.Code + " ErrorInfo:" + oinfo.Response.Error.Value.Message; return(null); } }
public string Translate(string sourceText, string desLang, string srcLang) { if (sourceText == "" || desLang == "" || srcLang == "") { errorInfo = "Param Missing"; return(null); } // 原文 string q = sourceText; string retString; Random rd = new Random(); string salt = rd.Next(100000).ToString(); string url = "https://tmt.tencentcloudapi.com/?"; string req = "Action=TextTranslate"; req += "&Nonce=" + salt; req += "&ProjectId=0"; req += "&Region=ap-shanghai"; req += "&SecretId=" + SecretId; req += "&Source=" + srcLang; req += "&SourceText=" + sourceText; req += "&Target=" + desLang; req += "&Timestamp=" + CommonFunction.GetTimeStamp(); req += "&Version=2018-03-21"; HMACSHA1 hmac = new HMACSHA1() { Key = System.Text.Encoding.UTF8.GetBytes(SecretKey) }; byte[] data = Encoding.UTF8.GetBytes("GETtmt.tencentcloudapi.com/?" + req); var result = hmac.ComputeHash(data); req = req + "&Signature=" + HttpUtility.UrlEncode(Convert.ToBase64String(result)); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + req); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; request.UserAgent = null; request.Timeout = 6000; try { HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); } catch (WebException ex) { errorInfo = "Request Timeout"; return(null); } TencentOldTransOutInfo oinfo = JsonConvert.DeserializeObject <TencentOldTransOutInfo>(retString); if (oinfo.Response.Error == null) { //得到翻译结果 return(oinfo.Response.TargetText); } else { errorInfo = "ErrorID:" + oinfo.Response.Error.Code + " ErrorInfo:" + oinfo.Response.Error.Message; return(null); } }