百度翻译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("老师没有留言哦");
		}
	});
});

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



猜你喜欢

转载自blog.csdn.net/jade2388/article/details/80135312