And the key assigned by the platform (which can be viewed in the management console) is concatenated in the order of appid+q+salt+key to obtain string 1. 2. Do md5 on string 1 to get a 32-bit lowercase sign. I found an MD5 encryption algorithm from the Internet. English is still normal, but when Chinese characters appear, it will return one:
{"error_code":"54001","error_msg":"Invalid Sign"}
Found error code list:
54001 Signature error Please check your signature generation method
No way, I took a look at the demo provided by Baidu Translate:
PHP version, JS version, Python version, C version
Java? ? do not have. . . . . Pit father. . . Hence JS. . . Is it possible to convert to Java? ? ? After two days of struggle. . . . So ever. . . I gave up. . . After searching on the Internet, I can directly call the js file after Java 1.6. After some debugging, I finally succeeded. . .
code show as below:
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();
} // 执行指定脚本
}
}
Operating results: d8e590e6dcd9034cb0206efdd04a164f
generated MD5 Baidu provided online ( http://app.baidu.com/yiten_md5 ) Results: Conventional encryption md5 ($ Pass)
32 bit MD5 uppercase: D8E590E6DCD9034CB0206EFDD04A164F
32 bit MD5 lowercase: d8e590e6dcd9034cb0206efdd04a164f
16 bit MD5 capitalized : DCD9034CB0206EFD
16-bit MD5 lowercase: dcd9034cb0206efd
Hope it will be useful for using Baidu Translate API;
reference article: http://blog.csdn.net/xzyxuanyuan/article/details/8062887