package com.baidu.translate.demo;
import java.util.HashMap;
import java.util.Map;
public class TransApi {
private static final String TRANS_API_HOST = "http://api.fanyi.baidu.com/api/trans/vip/translate";
private String appid;
private String securityKey;
public TransApi(String appid, String securityKey) {
this.appid = appid;
this.securityKey = securityKey;
}
public String getTransResult(String query, String from, String to) {
Map<String, String> params = buildParams(query, from, to);
return HttpGet.get(TRANS_API_HOST,params);
}
private Map<String, String> buildParams(String query, String from, String to) {
Map<String, String> params = new HashMap<String, String>();
params.put("q", query);
params.put("from", from);
params.put("to", to);
params.put("appid", appid);
// 随机数
String salt = String.valueOf(System.currentTimeMillis());
params.put("salt", salt);
// 签名
String src = appid + query + salt + securityKey; // 加密前的原文
params.put("sign",MD5.md5(src));
return params;
}
}
这个代码在CMD中,会出现找不到符号的错误,错误如下:
C:\myjava>javac TransApi.java
TransApi.java:19: 错误: 找不到符号
return HttpGet.get(TRANS_API_HOST,params);
^
符号: 变量 HttpGet
位置: 类 TransApi
TransApi.java:36: 错误: 找不到符号
params.put("sign",MD5.md5(src));
^
符号: 变量 MD5
位置: 类 TransApi
2 个错误
你要实现什么功能?java加密算法吗
不知道你这个问题是否已经解决, 如果还没有解决的话:问题的报错信息是找不到符号,即变量HttpGet和变量MD5。根据参考资料中的代码,可以发现这两个变量是未定义的。要解决这个问题,需要定义并导入这两个变量。
对于变量HttpGet,可以在TransApi.java的顶部添加以下导入语句:
import org.apache.http.client.methods.HttpGet;
对于变量MD5,可以在TransApi.java的顶部添加以下导入语句:
import com.yoostar.translate.utils.MD5;
要确保导入的包名和变量所在的位置一致。
修改后的TransApi.java代码如下所示:
package com.yoostar.translate.baidu;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
import org.apache.http.client.methods.HttpGet; // 添加的导入语句
import com.yoostar.translate.utils.MD5; // 添加的导入语句
public class TransApi {
private static final String TRANS_API_HOST = "http://api.fanyi.baidu.com/api/trans/vip/translate";
private static final String APP_ID = "20181025000225318";
private static final String SECURITY_KEY = "s0rbKVj44RcEH9m4yXrf";
public String getTransResult(String query, String from, String to) throws Exception {
Map<String, String> params = buildParams(query, from, to);
String body = HttpGet.get(TRANS_API_HOST, params);
JSONObject jsonObject = JSONArray.parseObject(body);
JSONArray trans_result = jsonObject.getJSONArray("trans_result");
return JSONArray.parseObject(trans_result.get(0).toString()).get("dst").toString();
}
private Map<String, String> buildParams(String query, String from, String to) throws Exception {
Map<String, String> params = new HashMap<>();
params.put("q", query);
params.put("from", from);
params.put("to", to);
params.put("appid", APP_ID);
String salt = String.valueOf(System.currentTimeMillis());
params.put("salt", salt);
String src = APP_ID + query + salt + SECURITY_KEY;
params.put("sign", MD5.md5(src));
return params;
}
}
请注意,如果在导入过程中存在任何错误,请确保相关的包已正确安装,并检查相关的包名是否正确。
这样修改后,应该能解决找不到符号的问题。如果还有其他问题,请提供更多详细信息,我将尽力帮助你解决。