最新版本调用bing翻译接口代码
package com.llk.controller.api.BingTranslate;
import com.llk.controller.base.BaseController;
import com.llk.entity.Page;
import com.llk.util.Image;
import com.llk.util.PageData;
import com.llk.util.jsonTools.EnumsConstant;
import com.llk.util.jsonTools.JsonResult;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.nio.charset.Charset;
import java.util.Properties;
/**
* bing翻译接口
*/
@Controller
@RequestMapping(value = "/api")
public class BingTranslateController extends BaseController {
private static Properties bingPath = getBingPath();
//ARRAY_SERVICE_URL=https://api.cognitive.microsofttranslator.com/translate?api-version=3.0
static String url = bingPath.getProperty("ARRAY_SERVICE_URL");//bing翻译访问地址
static String apiKey = bingPath.getProperty("APPID");//用户appID
private static String contentType = "application/json; charset=utf-8";
/**读取bingTranslate.properties 配置文件
* @return
* @throws IOException
*/
public static Properties getBingPath() {
InputStream inputStream = Image.class.getClassLoader().getResourceAsStream("bingTranslate.properties");
Properties p = new Properties();
try {
p.load(inputStream);
inputStream.close();
} catch (IOException e) {
//读取配置文件出错
e.printStackTrace();
}
return p;
}
/**
* bing翻译
* @return
* @throws Exception
*/
@ResponseBody
@RequestMapping(value = "/bingTranslate/translate")
public JsonResult translate() throws Exception {
logBefore(logger, "bing翻译开始 ");// 开始日志输出
JsonResult jr = new JsonResult();// 初始化返回值
PageData pd = this.getPageData();// 获取post+get的传入参数
try {
if(StringUtils.isBlank(pd.getString("text")) || StringUtils.isBlank(pd.getString("from")) || StringUtils.isBlank(pd.getString("to"))){
logger.info("bing翻译缺少必要参数!");
jr.setCode(EnumsConstant.EnumsInfo.SYSTEM_INFO_ERROR.getCode());//失败code
jr.setDesc(EnumsConstant.EnumsInfo.SYSTEM_INFO_ERROR.getDesc());//失败描述
return jr;
}
String[] textArray = pd.get("text").toString().split("\\*");
String text = "";
for (int i = 0 ; i < textArray.length ; i++){
if(textArray.length-1 == 0){
text+="{'Text':"+"'"+textArray[i]+"'"+"}";
break;
}
if(i == 0){
text+="{'Text':"+"'"+textArray[i]+"'"+"}";
} else{
text+=","+"{'Text':"+"'"+textArray[i]+"'"+"}";
}
}
//[{'Text':'Hello, what is your name?'}]
text = "["+text+"]";
String result = retrieveResponse(text,pd.getString("from"),pd.getString("to"));
if(result.indexOf("error") != -1){
jr.setCode(EnumsConstant.EnumsInfo.FAIL.getCode());// 失败code
jr.setDesc(EnumsConstant.EnumsInfo.FAIL.getDesc());// 失败描述
jr.setData(result);
}else{
jr.setCode(EnumsConstant.EnumsInfo.SUCCESS.getCode());// 成功code
jr.setDesc(EnumsConstant.EnumsInfo.SUCCESS.getDesc());// 成功描述
jr.setData(result);
}
} catch (Exception e) {
logger.info("bing翻译异常:"+e.getMessage());
jr.setCode(EnumsConstant.EnumsInfo.SYSTEM_ERROR.getCode());//异常code
jr.setDesc(EnumsConstant.EnumsInfo.SYSTEM_ERROR.getDesc());//异常描述
}
logAfter(logger,"bing翻译结束");//结束日志输出
return jr;
}
private static String retrieveResponse(String text,String from ,String to) throws Exception {
HttpClient httpclient = HttpClients.createDefault();
try {
String urls = url+"&from="+from+"&to="+to;
URIBuilder builder = new URIBuilder(urls);
URI uri = builder.build();
HttpPost request = new HttpPost(uri);
request.setHeader("Content-Type", contentType);
request.setHeader("Ocp-Apim-Subscription-Key", apiKey);
// Request body
StringEntity reqEntity = new StringEntity(text,Charset.forName("UTF-8"));
request.setEntity(reqEntity);
HttpResponse response = httpclient.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null) {
return EntityUtils.toString(entity);
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
return null;
}
}
Bing翻译接口(V3版本)
最新推荐文章于 2024-08-18 11:53:50 发布