案例使用百度翻譯API接口,實現文本翻譯
為保證翻譯質量,請將單次請求長度控制在 6000 bytes以內。(漢字約為2000個)
簽名生成方法如下:
1、將請求參數中的 APPID(appid), 翻譯query(q, 注意為UTF-8編碼), 隨機數(salt), 以及平台分配的密鑰(可在管理控制台查看)
按照 appid+q+salt+密鑰 的順序拼接得到字符串1。
2、對字符串1做md5,得到32位小寫的sign。
注意:
1、請先將需要翻譯的文本轉換為UTF-8編碼
2、在發送HTTP請求之前需要對各字段做URL encode。
3、在生成簽名拼接 appid+q+salt+密鑰 字符串時,q不需要做URL encode,在生成簽名之后,發送HTTP請求之前才需要對要發送的待翻譯文本字段q做URL encode。
將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
完整請求為:
也可以使用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純屬虛構,