日常API之百度翻譯

來源:互聯網
上載者:User

標籤:程式碼範例   img   byte   接下來   post   分享   ppi   管理   平台   

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

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

 

 

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

 

日常API之百度翻譯

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.