百度翻译开放接口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<NameValuePair> params = new ArrayList<NameValuePair>();
	        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错误的信息。

时间: 2024-10-25 02:13:49

百度翻译开放接口JAVA实现的相关文章

百度翻译APi接口实现

案例使用百度翻译API接口,实现文本翻译 为保证翻译质量,请将单次请求长度控制在 6000 bytes以内.(汉字约为2000个) 签名生成方法如下: 1.将请求参数中的 APPID(appid), 翻译query(q, 注意为UTF-8编码), 随机数(salt), 以及平台分配的密钥(可在管理控制台查看) 按照 appid+q+salt+密钥 的顺序拼接得到字符串1. 2.对字符串1做md5,得到32位小写的sign. 注意: 1.请先将需要翻译的文本转换为UTF-8编码 2.在发送HTTP

百度地图开放接口学习

百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口.您可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据,构建功能丰富.交互性强的地图类应用程序.百度地图Android SDK提供的所有服务是免费的,接口使用无次数限制.您需申请密钥(key)后, 才可使用百度地图Android SDK. 1.       地图 提供地图展示和地图操作功能 ·        地图展示包括:普通地图(

调用百度翻译API接口功能

public string appid = "自己的APPID"; public string q = "要翻译的文本"; public string salt = "1435660288"; public string key = "你的密钥"; public string from = "你的源语言例如zh"; public string to = "要翻译成的语言例如en"; pu

使用百度翻译开放API构建的python命令行词典

不多说,上代码: 1 #!/usr/bin/python 2 #-*- encoding=utf-8 -*- 3 4 import urllib 5 import urllib2 6 import json 7 8 keys=raw_input('input you word > ') 9 10 args={'q':keys,'from':'en','to':'zh'} 11 12 encode_args=urllib.urlencode(args) 13 14 url='http://open

python学习日记-百度翻译GUI

跟女朋友聊天的时候,女朋友抱怨每次翻译都要打开百度网页上找,这让我有了做一个小的翻译界面的想法,搜索百度翻译居然发现其有API,正合我意,上百度翻译开放平台注册一个个人测试帐号就可以了,东拼西凑,做出了来一个小程序,代码如下: 1 # coding=utf-8 2 from Tkinter import * 3 import tkMessageBox 4 import urllib2 5 import hashlib 6 import json 7 8 9 trans_id = '*******

基于百度翻译API开发属于自己的翻译工具

你是否每天使用着网页翻译工具?你是否遇到过这种情况,上网过程中遇到一个很长的单词但是又不能复制,要开两个浏览器,一个打开百度翻译,照着另一个网页输入单词?你安装了各种翻译软件后,又删除,只因忍受不了那每次弹出来的广告?其实我们想要的就是简单的翻译一个单词.今天就来使用百度翻译开放API,做一个属于自己的翻译工具,只有简单的翻译功能,至于外观自己根据自己的爱好,想做成什么样就做成什么样,终于可以任性一回了~~ 下面先来看一下词典效果:  一.百度翻译API简介 百度翻译可以通过HTTP访问,返回J

[JAVA]基于微信公众平台开放接口编写的sdk

最近在研究微信公众平台提供的公众服务号,以及提供的开放接口. 写了一个相对来说比较简单的基于java的微信sdk,目前实现的功能没有覆盖所有接口. 有兴趣的话,大家可以在这个基础上进行改进和完善,这样就不用重复发明轮子了. 所有的代码已经提交到github上: https://github.com/lemonbar/wxsdk 下载代码后,按照自己申请的微信公众号信息,来修改AppInfo.java文件. App.java文件中已经写了几个例子,可以单独运行以test开头的static方法,进行

使用百度翻译api支持中转英,中简转中繁等等

一.在写代码之前先在在百度翻译平台中,申请APP_ID 申请地址连接:http://api.fanyi.baidu.com/api/trans/product/index 二,可以看官方文档,实际上官方有提供demo申请id后可以直接作为工具类来用了 三,以下是我写的工具类: package com.hailian.util.translate; import java.io.BufferedReader; import java.io.IOException; import java.io.I

基于百度AI开放平台的人脸识别及语音合成

基于百度AI的人脸识别及语音合成课题 课题需求 (1)人脸识别 在Web界面上传人的照片,后台使用Java技术接收图片,然后对图片进行解码,调用云平台接口识别人脸特征,接收平台返回的人员年龄.性别.颜值等信息,将信息返回到Web界面进行显示. (2)人脸比对 在Web界面上传两张人的照片,后台使用Java技术接收图片,然后对图片进行解码,调用云平台接口比对照片信息,返回相似度. (3)语音识别 在Web页面上传语音文件,判断语音文件格式,如果不是wav格式进行转码处理,然后调用平台接口进行识别,