2024/11/7
今天完成软件构造实验一的部分
实验一:百度机器翻译SDK实验(2024.11.15日完成)
任务一:下载配置百度翻译Java相关库及环境(占10%)。
任务二:了解百度翻译相关功能并进行总结,包括文本翻译-通用版和文本翻译-词典版(占20%)。
任务三:完成百度翻译相关功能代码并测试调用,要求可以实现中文翻译成英文,英文翻译成中文(占30%)。
任务四:完成百度翻译GUI相关功能代码并测试调用,要求可以实现中文翻译成英文,英文翻译成中文(占30%)。
实验总结:(占10%)
从网上找到翻译的sdk
package com.mes.util; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import okhttp3.*; import org.json.JSONObject; import java.io.IOException; public class TransSDK { public static final String API_KEY = "uuuuuuuuuuuuuuuuu"; public static final String SECRET_KEY = "uyuuuuuuuuuuuuuuuuuuuuu"; static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build(); // /** // * 从用户的AK,SK生成鉴权签名(Access Token) // * // * @return 鉴权签名(Access Token) // * @throws IOException IO异常 // */ private static String getAccessToken() throws IOException { MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); RequestBody body = RequestBody.create(mediaType, "grant_type=client_credentials&client_id=" + API_KEY + "&client_secret=" + SECRET_KEY); Request request = new Request.Builder() .url("https://aip.baidubce.com/oauth/2.0/token") .method("POST", body) .addHeader("Content-Type", "application/x-www-form-urlencoded") .build(); Response response = HTTP_CLIENT.newCall(request).execute(); return new JSONObject(response.body().string()).getString("access_token"); } public static String getTrans(String query,String from,String to) throws IOException { MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"from\":\""+from+"\",\"to\":\""+to+"\",\"q\":\""+query+"\"}"); Request request = new Request.Builder() .url("https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token=" + getAccessToken()) .method("POST", body) .addHeader("Content-Type", "application/json") .addHeader("Accept", "application/json") .build(); Response response = HTTP_CLIENT.newCall(request).execute(); String jsonString=response.body().string(); ObjectMapper objectMapper = new ObjectMapper(); try { // 读取JSON字符串并转换为JsonNode JsonNode jsonNode = objectMapper.readTree(jsonString); // 提取dst的值 String dst = jsonNode.path("result").path("trans_result").get(0).path("dst").asText(); return dst; } catch (IOException e) { e.printStackTrace(); } return "未知错误"; } }
编写对应的调用类
package com.mes.util; import java.util.HashMap; import java.util.Map; public class TransApi { private static final String TRANS_API_HOST = "https://fanyi-api.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; } }