C#調用百度翻譯API


准備工作:

百度翻譯API申請一個接口,申請完以后,在管理控制台里查看APPID和密鑰.

先說一下這個API的邏輯,整個連接由七部分組成

第一部分:http://api.fanyi.baidu.com/api/trans/vip/translate

第二部分:q(請求翻譯的內容)

第三部分:from(翻譯源語言)

第四部分:to(譯文語言)

第五部分:appid(申請的接口返回的APP ID)

第六部分:salt=1435660288(這個加鹽貌似是固定的值)

第七部分:sign(簽名,這個簽名是根據前面appid,q,salt和密鑰的值拼起來用md5加密后的值)

例子(以中文轉英文為例):

q=蘋果,from=zh,to=en,appid=你的appid,salt=1435660288

獲取sign,需要添加System.Security.Cryptography的引用

 1         public string sign
 2         {
 3             get { return string.Format("{0}{1}{2}{3}", appid, q, salt, key); }
 4         }
 5         string getMd5()
 6         {
 7             var md5 = new MD5CryptoServiceProvider();
 8             var result = Encoding.UTF8.GetBytes(sign);
 9             var output = md5.ComputeHash(result);
10             return BitConverter.ToString(output).Replace("-", "").ToLower();
11         }    
View Code

我用的RestSharp抓取數據,在nuget里安裝RestSharp

添加完畢以后,就可以訪問地址了

 1  public string GetJson()
 2         {
 3             var client = new RestClient("http://api.fanyi.baidu.com");
 4             var request = new RestRequest("/api/trans/vip/translate", Method.GET);
 5             request.AddParameter("q", q);
 6             request.AddParameter("from", from);
 7             request.AddParameter("to", to);
 8             request.AddParameter("appid", appid);
 9             request.AddParameter("salt", salt);
10             request.AddParameter("sign", getMd5());
11             IRestResponse response = client.Execute(request);
12             return response.Content;
13         }
View Code

上面的方法返回了一個json字符串,直接解析就行了,最終的翻譯結果為trans_result.dst

 1  public string GetResult()
 2         {
 3             var lst = new List<string>();
 4             var content = GetJson();
 5             dynamic json = JsonConvert.DeserializeObject(content);
 6             foreach (var item in json.trans_result)
 7             {
 8                 lst.Add(item.dst.ToString());
 9             }
10             return string.Join(";",lst);
11         }
View Code

之所以會放個循環,是因為目前百度翻譯只返回一個翻譯結果,如果以后有多個,在前面邏輯不變的前提下也可以直接獲取整個列表的結果。

運行結果

其他語言翻譯詳見:語言列表


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM