百度翻譯api JAVA實現

進入官方:http://api.fanyi.baidu.com/api/trans/product/index

點擊立即使用,申請得到appid和密鑰   

ps:這要用作開發時的常量,若當月翻譯字符數≤2百萬,當月免費;若超過2百萬字符,按照49元/百萬字符支付當月全部翻譯字符數費用。個人測試還是夠用的,如果商用的話請按百度官方的服務協議。

    那麼好的,下面我簡單的說一下,先說簽名sign的生成(就是官方要求的參數拼到一起的MD5值)

    appid=2015063000000001+q=apple+salt=1435660288+密鑰=12345678 

   上面這一條就是官方要求的參數,分別說明一下:appid跟密鑰是申請給的,q是你要翻譯的內容,salt是隨機數拼到一起可以得到:2015063000000001apple143566028812345678  這些拼到一起,然後把生成的簽名結果之和,在https://md5jiami.51240.com/中生成的常規md5加密-32位小寫的。就是sign簽名了。

        完整的請求:(直接在瀏覽器地址欄測試)

    http://api.fanyi.baidu.com/api/trans/vip/translate?q=要翻譯的內容&from=auto&to=zh&appid=申請給的&salt=1435660288&sign=簽名

ps: from指的是翻譯前語種,to指的是翻譯後的語種,auto是自動識別,zh是中文。

瀏覽器返回一個json串:

{"from":"en","to":"zh","trans_result":[{"src":"apple","dst":"\u82f9\u679c"}]}

\u82f9\u679c爲unicode編碼轉換中文爲蘋果

實驗自己的appid跟密鑰好用,並且實踐成功,下面我們開始寫代碼。

先從官網的'文檔與支持'的一欄,點擊'各種語言DEMO',下載Java版。

C:\java\src\com\baidu\translate\demo裏面


這三個文件放進工具類的包,會有sgin簽名MD5加密,字符串拼接以及隨機數的生成的功能,完全不需要自己寫,咱們直接寫controller層:命名爲TranslateController

ps:我是要加一個按鈕,把頁面上從後臺取的內容,翻譯成中文,不想操作數據庫,就直接在頁面取了

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import cn.iqbar.common.utils.TransApi;

@Controller
@RequestMapping(value = "/我是路境")
public class TanslateController {
	// 在平臺申請的APP_ID 詳見 http://api.fanyi.baidu.com/api/trans/product/desktop?req=developer
    private static final String APP_ID = "自己去申請自己去填寫";
    private static final String SECURITY_KEY = "自己去申請自己去填寫";

	@RequestMapping(value = "/我是路徑")
	@ResponseBody
	@Transactional
	public Map <String,String> translateApi(String s1, String s2){
	//s1和s2 是我從前臺收的值,
			System.out.println(s1);
			System.out.println(s2);
		
	        TransApi api = new TransApi(APP_ID, SECURITY_KEY);
	        System.out.println(api.toString()+"接口引用");

	        Map <String,String> map=new HashMap<String,String>();

	        String transResult1 = api.getTransResult(s1, "auto", "zh");
	        String transResult2 = api.getTransResult(s2, "auto", "zh");
	        
	        System.out.println(transResult1);
	        System.out.println(transResult2);
	        
	        map.put("homeworkCovered", transResult1);
	        map.put("homeworkSet", transResult2);
	        model.addAttribute("trsante", map);
		 return map;
	}
	
}

jsp用script,ajax實現的命名爲baidufanyi.jsp

<button id="btn">翻譯</button>
<div style="margin-top: 30px" id="transCont"></div>

自己去引script

//初始化按鈕ajax顯示翻譯
$("#btn").click(function() {
//這是我取的值
	var homeworkCovered = $("#homeworkCovered").text();
	var homeworkSet = $("#homeworkSet").text();
	$.ajax({
		type: 'post',
		url: '/我是路境/我是路徑',
		data: {
			s1: homeworkCovered,
			s2: homeworkSet
		},
		success: function(data) {
			var homeC = JSON.parse(data.homeworkCovered);
			var homeS = JSON.parse(data.homeworkSet);
			console.log(homeC.trans_result[0].dst);
			console.log(homeS);
			
			var homeCTag = "<p>Pages/Slides/Topics Covered:<span>  " + homeC.trans_result[0].dst + "</span></p>";
			var homeSTag = "<p>Homework Set:<span>  " + homeS.trans_result[0].dst + "</span></p>";
			//console.log(homeCTag);
			//console.log(homeSTag);
			$(homeCTag).appendTo("#transCont");
			$(homeSTag).appendTo("#transCont");
			$("#btn").attr("disabled","true");
			
		},
		error: function() {
			alert("老師沒有留言哦");
		}
	});
});

好的  這樣就可以了  慢慢在控制檯調試,可以做個參考例子,也方便我日後查詢熟練掌握



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章