百度翻譯是什麼,可以吃嗎?相信很多人都熟悉,它是我們生活中必不可少的一隻東東。 但是,百度翻譯開發平臺只有每月只能翻譯200萬個字元,多出的要按照49.00/百萬字元來算。對於我醬紫的乞丐程式員來說,其實已經是足足的了。 接下來進入正題,分為2個部分講,一是免費的百度翻譯,二是收費的百度翻譯(此處應 ...
百度翻譯是什麼,可以吃嗎?相信很多人都熟悉,它是我們生活中必不可少的一隻東東。
但是,百度翻譯開發平臺只有每月只能翻譯200萬個字元,多出的要按照49.00/百萬字元來算。對於我醬紫的乞丐程式員來說,其實已經是足足的了。
接下來進入正題,分為2個部分講,一是免費的百度翻譯,二是收費的百度翻譯(此處應該不會有人看)
首先講講免費的吧,這個API呢請求很簡單,而且速度快。
一、免費版(無限制,且速度快)
先打開一隻Cat,啊不,是翻譯和Chrome(只要可以抓包的瀏覽器都可以,此處用Chrome做示例)
可以從中找到一個名為v2transapi的請求,從中可以看出是以POST方式發送的。
獲取API:
http://fanyi.baidu.com/v2transapi
一下使用C#做代碼示例:
1 public static async Task<string> PostWebAsync(string url, string idata) 2 { 3 var request = (HttpWebRequest)WebRequest.Create(url); 4 var data = Encoding.ASCII.GetBytes(idata); 5 request.Method = "POST"; 6 request.ContentType = "application/x-www-form-urlencoded"; 7 request.ContentLength = data.Length; 8 using (var stream = await request.GetRequestStreamAsync()) 9 { 10 await stream.WriteAsync(data, 0, data.Length); 11 } 12 13 var response = (HttpWebResponse)await request.GetResponseAsync(); 14 15 var r = new StreamReader(response.GetResponseStream()); 16 // System.Windows.MessageBox.Show(await r.ReadToEndAsync()); 17 return await r.ReadToEndAsync(); 18 }
我們需要一隻發送POST請求的方法,接著使用:
1 string data = PostWebAsync("http://fanyi.baidu.com/v2transapi","from=auto&to={翻譯後的語言}&query={翻譯的內容}&transtype=realtime&simple_means_flag=3");
其中的from和to屬性可以參照百度翻譯API的代碼填寫。
得到數據後,我們需要解析他。
翻譯後的文本位於JSON的:["trans_result"]["data"][0]["dst"]位置處。
二、收費版(有限制,速度快,開發難度高)
咳咳,首先你需要註冊一隻百度賬號,到api.fanyi.baidu.com申請服務。
簽名生成方法如下:
1、將請求參數中的 APPID(appid), 翻譯query(q, 註意為UTF-8編碼), 隨機數(salt), 以及平臺分配的密鑰(可在管理控制台查看)
按照 appid+q+salt+密鑰 的順序拼接得到字元串1。
2、對字元串1做md5,得到32位小寫的sign。
奉上C# MD5加密一枚:
1 public class MD5 2 { 3 public static byte[] EncryptToMD5(string str) 4 { 5 MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); 6 byte[] str1 = System.Text.Encoding.UTF8.GetBytes(str); 7 byte[] str2 = md5.ComputeHash(str1, 0, str1.Length); 8 md5.Clear(); 9 (md5 as IDisposable).Dispose(); 10 return str2; 11 } 12 public static string EncryptToMD5string(string str) 13 { 14 byte[] bytHash = EncryptToMD5(str); 15 string sTemp = ""; 16 for (int i = 0; i < bytHash.Length; i++) 17 { 18 sTemp += bytHash[i].ToString("X").PadLeft(2, '0'); 19 } 20 return sTemp.ToLower(); 21 } 22 }
請求地址:
"http://api.fanyi.baidu.com/api/trans/vip/translate?q=" + q + "&from=" + from + "&to=" + to + "&appid=20151231000008489&salt=2004112629" + "&sign=" + sign
註意:
1、請先將需要翻譯的文本轉換為UTF-8編碼
2、在發送HTTP請求之前需要對各欄位做URL encode。
3、在生成簽名拼接 appid+q+salt+密鑰 字元串時,q不需要做URL encode,在生成簽名之後,發送HTTP請求之前才需要對要發送的待翻譯文本欄位q做URL encode。
最後得到一隻JSON,正確的翻譯後內容位於["trans_result"][0]["dst"]最後進行UFT8解碼處理即可。
啊喵,本次的教程到這裡就結束了哦,下次再見!