百度翻译使用
新版本百度翻译
1.获取appid和appserect
2.使用内部的js对其MD5加密
3.post提交请求
参考:
http://blog.csdn.net/xiaomen417/article/details/50237897
http://api.fanyi.baidu.com
我的源码:
md5.js使用,放于C盘(直接下载api demo js)
package com.dm.wx.service;
import com.dm.core.security.MD5;
import com.dm.wx.domain.exdemo.TranslateResult;
import com.dm.wx.util.MD5Util;
import com.dm.wx.util.R;
import com.google.gson.Gson;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Date;
/**
*
* @author liufeng
* @date 2013-10-21
*/
public class BaiduTranslateService {
public static String getSign(String SOURCE){
String APPID = "---"; // 需要改成自己的APP ID
String KEY = "---"; //需要改成自己的密钥
String SALT = "123456";//随机数,官方提供的是获取时间
String SIGN = "";
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
String jsFileName = "c://md5.js"; // 读取js文件
FileReader reader;
try {
reader = new FileReader(jsFileName);
engine.eval(reader);
if (engine instanceof Invocable) {
Invocable invoke = (Invocable) engine; // 调用merge方法,并传入两个参数
System.out.println(APPID + SOURCE + SALT + KEY);
SIGN = (String) invoke.invokeFunction("MD5",
APPID + SOURCE + SALT + KEY);
System.out.println(SIGN);
}
reader.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // 执行指定脚本
return SIGN;
}
/**
* 发起http请求获取返回结果
*
* @param requestUrl 请求地址
* @return
*/
public static String httpRequest(String requestUrl) {
StringBuffer buffer = new StringBuffer();
try {
URL url = new URL(requestUrl);
HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();
httpUrlConn.setDoOutput(false);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
httpUrlConn.setRequestMethod("GET");
httpUrlConn.connect();
// 将返回的输入流转换成字符串
InputStream inputStream = httpUrlConn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
// 释放资源
inputStream.close();
inputStream = null;
httpUrlConn.disconnect();
} catch (Exception e) {
}
return buffer.toString();
}
/**
* utf编码
*
* @param source
* @return
*/
public static String urlEncodeUTF8(String source) {
String result = source;
try {
result = java.net.URLEncoder.encode(source, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
}
/**
* 翻译(中->英 英->中 日->中 )
*
* @param source
* @return
*/
public static String translate(String source) {
String dst = null;
String appid="---";
String appserect="---";
String salt= "123456";
String sign = "";
// 组装查询地址
//String requestUrl = "http://openapi.baidu.com/public/2.0/bmt/translate?client_id="+ R.CLIENT_ID+"&q={keyWord}&from=auto&to=auto";
//appid+q+salt+密钥
String mysign="";
mysign = appid+source+salt+appserect;
sign = getSign(source);
String requestUrl = "http://api.fanyi.baidu.com/api/trans/vip/translate?q={keyWord}&from=auto&to=auto&appid="+appid+"&salt="+salt+"&sign="+sign;
requestUrl = requestUrl.replace("{keyWord}", urlEncodeUTF8(source));
// 查询并解析结果
try {
// 查询并获取返回结果
String json = httpRequest(requestUrl);
// 通过Gson工具将json转换成TranslateResult对象
TranslateResult translateResult = new Gson().fromJson(json, TranslateResult.class);
// 取出translateResult中的译文
dst = translateResult.getTrans_result().get(0).getDst();
} catch (Exception e) {
e.printStackTrace();
}
if (null == dst)
dst = "翻译系统异常,请稍候尝试!";
return dst;
}
public static void main(String[] args) {
// 翻译结果:The network really powerful
System.out.println(translate("网络真强大"));
}
/* coreService调用
// 文本消息
if (WeixinUtil.REQ_MESSAGE_TYPE_TEXT.equals(msgType)) {
String content = requestMap.get("Content").trim();
if (content.startsWith("翻译")) {
String keyWord = content.replaceAll("^翻译", "").trim();
if ("".equals(keyWord)) {
textMessage.setContent(getTranslateUsage());
} else {
textMessage.setContent(BaiduTranslateService.translate(keyWord));
}
out.print(WeixinUtil.textMessageToXml(textMessage));
}
}
//---------------
/**
* Q译通使用指南
*
* @return
*/
/*public static String getTranslateUsage() {
StringBuffer buffer = new StringBuffer();
buffer.append(XiaoqUtil.emoji(0xe148)).append("Q译通使用指南").append("\n\n");
buffer.append("Q译通为用户提供专业的多语言翻译服务,目前支持以下翻译方向:").append("\n");
buffer.append(" 中 -> 英").append("\n");
buffer.append(" 英 -> 中").append("\n");
buffer.append(" 日 -> 中").append("\n\n");
buffer.append("使用示例:").append("\n");
buffer.append(" 翻译我是中国人").append("\n");
buffer.append(" 翻译dream").append("\n");
buffer.append(" 翻译さようなら").append("\n\n");
buffer.append("回复“?”显示主菜单");
return buffer.toString();
}
*/
}
http://115.159.110.224:81/ivi/sys/myhref_viewThis.do?f_gid=F9FADB03C44F4C01B438091ECF4C0334&f_type=ly
我的微信公众号:my528xx,