zoukankan      html  css  js  c++  java
  • 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

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

    运行结果

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

  • 相关阅读:
    爬虫工具简单整理
    vue单页面处理SEO问题
    深入浅出MyBatis-快速入门
    js的匿名函数 和普通函数
    Javascript位置 body之前、后执行顺序!
    eclipse中的ctrl+H使用中的问题
    Eclipse中ctrl+shift+r与ctrl+shift+t的区别
    Java 判断字符串是否为空的四种方法、优缺点与注意事项
    eclipse 快捷键
    只缩进新加一段代码的方法
  • 原文地址:https://www.cnblogs.com/DevilX5/p/7079470.html
Copyright © 2011-2022 走看看