准備工作:
在百度翻譯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 }
我用的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 }
上面的方法返回了一個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 }
之所以會放個循環,是因為目前百度翻譯只返回一個翻譯結果,如果以后有多個,在前面邏輯不變的前提下也可以直接獲取整個列表的結果。
運行結果
其他語言翻譯詳見:語言列表