百度翻译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  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  map=new HashMap();

	        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


自己去引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 = "

Pages/Slides/Topics Covered:  " + homeC.trans_result[0].dst + "

"; var homeSTag = "

Homework Set:  " + homeS.trans_result[0].dst + "

"; //console.log(homeCTag); //console.log(homeSTag); $(homeCTag).appendTo("#transCont"); $(homeSTag).appendTo("#transCont"); $("#btn").attr("disabled","true"); }, error: function() { alert("老师没有留言哦"); } }); });

好的  这样就可以了  慢慢在控制台调试,可以做个参考例子,也方便我日后查询熟练掌握



你可能感兴趣的:(java开发)