百度翻译API与MD5加密 Java使用
2015-12-09 16:21
393 查看
这段时间研究一下百度翻译API,结果发现新版的百度翻译较以前的有了很大的变化:
旧版百度翻译的URL地址:
http://openapi.baidu.com/public/2.0/bmt/translate?client_id=YourApiKey&q=today&from=auto&to=auto
参数只需要:client_id(API key),q(翻译的内容),from(源语言语种:语言代码或auto),to(目标语言语种:语言代码或auto);
新版百度翻译的URL地址:
http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4
参数需要:q(翻译的内容),from(翻译源语言 ,可设置为auto),to(译文语言,不可设置为auto),appid (API key)
salt(随机数),sign(签名);
签名sign生成的方法是:
1、将请求参数中的 APPID(appid), 翻译query(q, 注意为UTF-8编码), 随机数(salt), 以及平台分配的密钥(可在管理控制台查看)
按照 appid+q+salt+密钥 的顺序拼接得到字符串1。
2、对字符串1做md5,得到32位小写的sign。
自己从网上找了一个MD5的加密算法,英文还算正常,但是出现汉字的时候,就会返回一条:
{“error_code”:”54001”,”error_msg”:”Invalid Sign”}
找到错误码列表:
54001 签名错误 请检查您的签名生成方法
没办法,看了一下百度翻译提供的demo:
PHP 版、JS 版、Python 版、C 版
Java呢??木有。。。。。坑爹。。。于是乎JS。。。是不是可以转为Java???经过两天的奋斗。。。。于是乎。。。我放弃了。。。在网上搜寻了一番,返现Java 1.6之后可以直接调用js文件,经过一番调试终于成功了。。。
代码如下:
运行的结果:d8e590e6dcd9034cb0206efdd04a164f
百度提供的MD5在线生成(http://app.baidu.com/yiten_md5)的结果:常规md5加密($pass)
32位MD5大写:D8E590E6DCD9034CB0206EFDD04A164F
32位MD5小写:d8e590e6dcd9034cb0206efdd04a164f
16位MD5大写:DCD9034CB0206EFD
16位MD5小写:dcd9034cb0206efd
希望对使用百度翻译API有用;
参考文章:/article/9026501.html
旧版百度翻译的URL地址:
http://openapi.baidu.com/public/2.0/bmt/translate?client_id=YourApiKey&q=today&from=auto&to=auto
参数只需要:client_id(API key),q(翻译的内容),from(源语言语种:语言代码或auto),to(目标语言语种:语言代码或auto);
新版百度翻译的URL地址:
http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4
参数需要:q(翻译的内容),from(翻译源语言 ,可设置为auto),to(译文语言,不可设置为auto),appid (API key)
salt(随机数),sign(签名);
签名sign生成的方法是:
1、将请求参数中的 APPID(appid), 翻译query(q, 注意为UTF-8编码), 随机数(salt), 以及平台分配的密钥(可在管理控制台查看)
按照 appid+q+salt+密钥 的顺序拼接得到字符串1。
2、对字符串1做md5,得到32位小写的sign。
自己从网上找了一个MD5的加密算法,英文还算正常,但是出现汉字的时候,就会返回一条:
{“error_code”:”54001”,”error_msg”:”Invalid Sign”}
找到错误码列表:
54001 签名错误 请检查您的签名生成方法
没办法,看了一下百度翻译提供的demo:
PHP 版、JS 版、Python 版、C 版
Java呢??木有。。。。。坑爹。。。于是乎JS。。。是不是可以转为Java???经过两天的奋斗。。。。于是乎。。。我放弃了。。。在网上搜寻了一番,返现Java 1.6之后可以直接调用js文件,经过一番调试终于成功了。。。
代码如下:
import java.io.FileReader; import java.util.Date; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; public class TestMD5 { public static void main(String[] args) { String APPID = "APPID"; // 需要改成自己的APP ID String KEY = "KEY"; //需要改成自己的密钥 String SALT = Long.toString(new Date().getTime());//随机数,官方提供的是获取时间 String SOURCE = "足球";//翻译内容 String SIGN = ""; ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("javascript"); String jsFileName = "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(); } // 执行指定脚本 } }
运行的结果:d8e590e6dcd9034cb0206efdd04a164f
百度提供的MD5在线生成(http://app.baidu.com/yiten_md5)的结果:常规md5加密($pass)
32位MD5大写:D8E590E6DCD9034CB0206EFDD04A164F
32位MD5小写:d8e590e6dcd9034cb0206efdd04a164f
16位MD5大写:DCD9034CB0206EFD
16位MD5小写:dcd9034cb0206efd
希望对使用百度翻译API有用;
参考文章:/article/9026501.html
相关文章推荐
- Mac Eclipse+Maven+TestNg+ReportNg 生成测试报告
- Spring图片上传和常见错误
- 简单地使用下RxJava + Retrofit
- Android studio导入第三方库的各种方法和eclipse的导入方式对比
- SpringMVC使用@ResponseBody时返回json的日期格式、@DatetimeFormat使用注意
- SpringMVC中四个基本注解
- Spring Web MVC
- Java多线程编程
- SpringMVC 事务配置完全详解
- 【exception】java.lang.NoSuchMethodError: org.springframework.beans.Beans.BeanUtils
- java byte 字节负数
- Java单例设计模式
- 分词 正文提取 java
- [javase学习笔记]-2.2 标识符
- 导出java帮助文档
- spark 倾斜连接 java实现
- Spring拦截器
- 导出java帮助文档
- java 一个类同时继承Thread,Runable
- java反射详解