java微信开发,百度翻译最新接口使用

百度翻译使用

新版本百度翻译

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,

java微信开发,百度翻译最新接口使用_第1张图片

你可能感兴趣的:(微信)