• 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

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

    运行结果

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

  • 相关阅读:
    至少有K个重复字符的最长字串 分治法+递归
    旋转数组
    旋转链表 指针移动
    通过删除字母匹配到字典里最长的单词
    How to fix yum after CentOS 6 went EOL
    Centos6 yum源配置(CentOS 6停止更新)
    ORACLE 12C R2 RAC 安装配置指南
    Background Processes Specific to Oracle RAC
    如何缩小 Oracle 数据库中的临时表空间
    Script To Get Tablespace Utilization In Oracle Database 12c
  • 原文地址:https://www.cnblogs.com/DevilX5/p/7079470.html
Copyright © 2020-2023  润新知