日常API之百度翻譯


百度翻譯是什么,可以吃嗎?相信很多人都熟悉,它是我們生活中必不可少的一只東東。

但是,百度翻譯開發平台只有每月只能翻譯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解碼處理即可。

 

 

啊喵,本次的教程到這里就結束了哦,下次再見!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM