diff --git a/common-tools/pom.xml b/common-tools/pom.xml index 458fc34..9f98e1c 100644 --- a/common-tools/pom.xml +++ b/common-tools/pom.xml @@ -146,6 +146,16 @@ org.springframework spring-web + + com.squareup.okhttp3 + okhttp + 4.12.0 + + + org.json + json + 20231013 + diff --git a/common-tools/src/main/java/com/ho/common/tools/util/TranslateUtils.java b/common-tools/src/main/java/com/ho/common/tools/util/TranslateUtils.java new file mode 100644 index 0000000..53bf7b3 --- /dev/null +++ b/common-tools/src/main/java/com/ho/common/tools/util/TranslateUtils.java @@ -0,0 +1,79 @@ +package com.ho.common.tools.util; + + +import lombok.extern.slf4j.Slf4j; +import okhttp3.*; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; +/** + * @author kerwin + */ +@Slf4j +public class TranslateUtils { + + public static final String API_KEY = "hNDgbvTzhQymYvVvcAhCWEkh"; + public static final String SECRET_KEY = "tkgqkVDEJi8xBSrToNPdJdV2CYFNZM31"; + + public static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().readTimeout(300, TimeUnit.SECONDS).build(); + + + // 静态翻译方法:输入待翻译文本,返回目标语言文本 + public static String translate(String text) throws IOException { + MediaType mediaType = MediaType.parse("application/json"); + // 动态构建请求体(支持任意文本) + String jsonBody = String.format("{\"from\":\"zh\",\"to\":\"en\",\"q\":\"%s\"}", text); + RequestBody body = RequestBody.create(mediaType, jsonBody); + + Request request = new Request.Builder() + .url("https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token=" + getAccessToken()) + .post(body) + .addHeader("Content-Type", "application/json") + .addHeader("Accept", "application/json") + .build(); + + try (Response response = HTTP_CLIENT.newCall(request).execute()) { + String responseBody = response.body().string(); + // 解析JSON获取dst值 + return parseDstFromResponse(responseBody); + } + } + + // 解析JSON响应并提取dst + private static String parseDstFromResponse(String jsonResponse) { + JSONObject root = new JSONObject(jsonResponse); + JSONObject result = root.getJSONObject("result"); + JSONArray transResult = result.getJSONArray("trans_result"); + // 获取第一条翻译结果的dst字段 + return transResult.getJSONObject(0).getString("dst"); + } + + // 示例调用 + public static void main(String[] args) throws IOException { + String translated = translate("PCS环境过温降额[恢复]"); + System.out.println("翻译结果: " + translated); // 输出: active power + } + + + /** + * 从用户的AK,SK生成鉴权签名(Access Token) + * + * @return 鉴权签名(Access Token) + * @throws IOException IO异常 + */ + 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"); + } + +}