123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- package com.travel.baidu;
- import com.alibaba.fastjson.JSONObject;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.CrossOrigin;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
- import javax.servlet.http.HttpServletRequest;
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * 翻译
- */
- @Controller
- @RequestMapping("translationInterface")
- @CrossOrigin(origins = "*")
- public class Translation {
- /**
- * 翻译接口
- * @param translationVal 参数
- * @return 返回翻译结果
- */
- @RequestMapping("translation")
- @ResponseBody
- public String translation(String translationVal, String from, String to, HttpServletRequest request){
- // 请求url
- String url = "https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1";
- Map<String, Object> mapVal = new HashMap<>();
- try {
- String ip = request.getHeader("Host");
- System.out.println(ip);
- Map<String, Object> map = new HashMap<>();
- map.put("from", from);
- map.put("to", to);
- map.put("q", translationVal);
- map.put("termIds", "bak,pl");
- String param = GsonUtils.toJson(map);
- // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
- String accessToken = accessToken();
- String result = HttpUtil.post(url, accessToken, "application/json", param);
- JSONObject jsonObject = JSONObject.parseObject(result);
- JSONObject jsonObject1 = (JSONObject) jsonObject.get("result");
- List<Map<Object, Object>> list = (List<Map<Object, Object>>) jsonObject1.get("trans_result");
- return (String) list.get(0).get("dst");
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- /**
- * 百度翻译获取access_token
- * @return 返回access_token
- */
- public static String accessToken(){
- String baidukey = "xmziCjk32tDLk9U2jpY2F5E7";
- String secretKey = "lYpEeG2tKKS82KZ9Q1gHKpfGgrRAXQMQ";
- // 获取token地址
- String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
- String getAccessTokenUrl = authHost
- // 1. grant_type为固定参数
- + "grant_type=client_credentials"
- // 2. 官网获取的 API Key
- + "&client_id=" + baidukey
- // 3. 官网获取的 Secret Key
- + "&client_secret=" + secretKey;
- try {
- URL realUrl = new URL(getAccessTokenUrl);
- // 打开和URL之间的连接
- HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
- connection.setRequestMethod("GET");
- connection.connect();
- // 获取所有响应头字段
- Map<String, List<String>> map = connection.getHeaderFields();
- // 遍历所有的响应头字段
- for (String key : map.keySet()) {
- System.err.println(key + "--->" + map.get(key));
- }
- // 定义 BufferedReader输入流来读取URL的响应
- BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
- String result = "";
- String line;
- while ((line = in.readLine()) != null) {
- result += line;
- }
- /**
- * 返回结果示例
- */
- JSONObject jsonObject = JSONObject.parseObject(result);
- String access_token = jsonObject.getString("access_token");
- return access_token;
- } catch (Exception e) {
- System.err.printf("获取token失败!");
- e.printStackTrace(System.err);
- }
- return null;
- }
- }
|