翻译接口java_百度翻译开放接口JAVA实现

标签:

百度翻译的开放接口文档在这里:http://api.fanyi.baidu.com/api/trans/product/apidoc

至于申请key啥的就不说了,直接进实现。

我是用HC4.5.1做的,在部分代码处理上面,会跟3 4 的版本有点不一致。

public static void main(String[] args) {

String query = "搞个乜";

get(query);

post(query);

}

private static void get(String query){

CloseableHttpClient hc = HttpClientBuilder.create().build();

HttpGet httpGet = new HttpGet();

CloseableHttpResponse response;

try {

String q = URLEncoder.encode(query, "UTF-8");

String from = Lang.AUTO;

String to = Lang.EN;

String salt = RandomStringUtils.randomNumeric(8);

//appid+q+salt+密钥

String sign = EncryptUtils.md5crypt(TranslateApi.APPID + query + salt + TranslateApi.KEY);

httpGet = new HttpGet(TranslateApi.URL

+ "?q=" + q

+ "&from=" + from

+ "&to=" + to

+ "&appid=" + TranslateApi.APPID

+ "&salt=" + salt

+ "&sign=" + sign);

response = hc.execute(httpGet);

System.out.println(EntityUtils.toString(response.getEntity()));

} catch (ClientProtocolException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

httpGet.releaseConnection();

}

}

private static void post(String query) {

CloseableHttpClient hc = HttpClientBuilder.create().build();

HttpPost httpPost = new HttpPost(TranslateApi.URL);

CloseableHttpResponse response;

try {

String salt = RandomStringUtils.randomNumeric(8);

//appid+q+salt+密钥

String sign = EncryptUtils.md5crypt(TranslateApi.APPID + query + salt + TranslateApi.KEY);

List params = new ArrayList();

params.add(new BasicNameValuePair("q", query));

params.add(new BasicNameValuePair("from", Lang.AUTO));

params.add(new BasicNameValuePair("to", Lang.EN));

params.add(new BasicNameValuePair("appid", TranslateApi.APPID));

params.add(new BasicNameValuePair("salt",salt));

params.add(new BasicNameValuePair("sign", sign));

httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));

response = hc.execute(httpPost);

System.out.println(EntityUtils.toString(response.getEntity()));

} catch (ClientProtocolException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

httpPost.releaseConnection();

}

}

整个过程其实是比较简单的,稍微要注意点的,就是POST方法的使用上,由于是使用POST,所以q参数实质上传递的就是原值,而不是urlencode后的值。如果传递的是编码之后的值,那么恭喜你了,你想要的结果根本就不是那么一回事。另外一个关键点是post参数在加入到POST请求的时候,必须要传递UTF-8格式参数过去,否则的话,会报sign错误的信息。

标签:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值