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

之所以会放个循环,是因为目前百度翻译只返回一个翻译结果,如果以后有多个,在前面逻辑不变的前提下也可以直接获取整个列表的结果。

运行结果

其他语言翻译详见:语言列表

原文地址:https://www.cnblogs.com/DevilX5/p/7079470.html