准备工作:
在百度翻译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 }
之所以会放个循环,是因为目前百度翻译只返回一个翻译结果,如果以后有多个,在前面逻辑不变的前提下也可以直接获取整个列表的结果。
运行结果
其他语言翻译详见:语言列表