百度翻译APi接口实现

案例使用百度翻译API接口,实现文本翻译c#

为保证翻译质量,请将单次请求长度控制在 6000 bytes之内。(汉字约为2000个)api

 

签名生成方法以下:数组

一、将请求参数中的 APPID(appid), 翻译query(q, 注意为UTF-8编码), 随机数(salt), 以及平台分配的密钥(可在管理控制台查看)app

按照 appid+q+salt+密钥 的顺序拼接获得字符串1。dom

二、对字符串1作md5,获得32位小写的sign。ui

 

注意:编码

一、请先将须要翻译的文本转换为UTF-8编码加密

二、在发送HTTP请求以前须要对各字段作URL encodeurl

三、在生成签名拼接 appid+q+salt+密钥 字符串时,q不须要作URL encode,在生成签名以后,发送HTTP请求以前才须要对要发送的待翻译文本字段q作URL encode。spa

将apple从英文翻译成中文:

请求参数:

q=apple

from=en

to=zh

appid=2015063000000001

salt=1435660288

平台分配的密钥: 12345678

生成sign:

>拼接字符串1

拼接appid=2015063000000001+q=apple+salt=1435660288+密钥=12345678

获得字符串1 =2015063000000001apple143566028812345678

>计算签名sign(对字符串1作md5加密,注意计算md5以前,串1必须为UTF-8编码)

sign=md5(2015063000000001apple143566028812345678)

sign=f89f9594663708c1605f3d736d01d2d4

完整请求为:

http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4

也能够使用POST方法传送须要的参数。

 public string BaiduFanYi()
        {
            string q = "苹果";
            string appId = "159357147258369";
            string password="1s5d8d6g5f8cd4d5";
            //目标语言
            string  to = "en";
            //源语言
            string from = "zh";
            //得到随机数
            string randomnum = System.DateTime.Now.Millisecond.ToString();
            //得到须要加密的字符串
            string index =appId+q+randomnum+password ;
            //进行加密
            string MD5Sign = GetMD5(index);
            //建立链接地址
            string url = string.Format("http://api.fanyi.baidu.com/api/trans/vip/translate?q={0}&from={1}&to={2}&appid={3}&salt={4}&sign={5}",
                q,from,to,appId,randomnum,MD5Sign
                );
            WebClient wc = new WebClient();
            string FanYi=wc.DownloadString(url);
            return FanYi;
        }
        /// <summary>
        /// MD5加密
        /// </summary>
        /// <param name="input">要加密的文本</param>
        /// <returns></returns>
        public string GetMD5(string input)
        {
            //判断是否为空
            if (input == null)
            {
                return null;
            }
            //建立MD5哈希表的默认实例
            MD5 md = MD5.Create();
            //将要加密的字符串转换为字节数组
            byte[] buffer = Encoding.UTF8.GetBytes(input);
            //计算指定的字节数组的哈希值
            byte[] data = md.ComputeHash(buffer);
            StringBuilder sb = new StringBuilder();
            //寻黄将哈需数据的每个字节格式化为16进制字符串
            for(int i=0;i<data.Length;i++)
            {
                sb.Append(data[i].ToString("x2"));
            }
            //返回16进制字符串
            return sb.ToString();
        }

上文中APPid以及password纯属虚构,

相关文章
相关标签/搜索