详尽分享百度翻译api

简介: 详尽分享百度翻译api

官方api文档:

springboot demo地址:

第一步:

注册百度账号(自行注册)

第二步

申请百度翻译api ,获得appid以及securityKey

申请教程:

第三步

编写请求工具类(HttpUtil),这里使用Apache Jakarta Common 下的httpclient

Httpclient maven地址:

以下是请求工具类 HttpUtil code:

import com.alibaba.fastjson.JSONObject;

import org.apache.http.HttpEntity;

import org.apache.http.NameValuePair;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.CloseableHttpResponse;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.entity.StringEntity;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.message.BasicNameValuePair;

import //代码效果参考:http://www.zidongmutanji.com/zsjx/525215.html

org.apache.http.util.EntityUtils;

import org.springframework.util.StringUtils;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

/

请求工具类

/

public class HttpUtil {

/

get 请求

@param url

@return

@throws IOException

/

public static JSONObject doGetStr(String url) throws IOException {

CloseableHttpClient httpClient = HttpClients.createDefault();

HttpGet httpGet = new HttpGet(url);

CloseableHttpResponse response = httpClient.execute(httpGet);

HttpEntity entity = response.getEntity();

if (entity != null) {

String content = EntityUtils.toString(entity,"UTF-8") ;

return JSONObject.parseObject(content);

}

return //代码效果参考:http://www.zidongmutanji.com/zsjx/341233.html

null;

}

/**

post 请求 String装填

@param url

@param reqContent

@return

@throws IOException

/

public static JSONObject doPostStr(String url,String reqContent) throws IOException {

CloseableHttpClient httpClient = HttpClients.createDefault();

HttpPost httpPost = new HttpPost(url);

if (!StringUtils.isEmpty(reqContent)) {

httpPost.setEntity(new StringEntity(reqContent,"UTF-8"));

}

CloseableHttpResponse response = httpClient.execute(httpPost);

HttpEntity entity = response.getEntity();

if (entity != null) {

String resContent = EntityUtils.toString(entity,"UTF-8") ;

return JSONObject.parseObject(resContent);

}

return null;

}

/**

post 请求 map装填

@param url

@param reqContent

@return

@throws IOException

/

public static JSONObject doPostStr(String url,Map reqContent) throws IOException {

CloseableHttpClient httpClient = HttpClients.createDefault();

HttpPost httpPost = new HttpPost(url);

//装填参数

List nvps = new ArrayList();

if (reqContent != null) {

for (Map.Entry entry : reqContent.entrySet()) {

nvps.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));

}

}

//设置参数到请求对象中

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

CloseableHttpResponse response = httpClient.execute(httpPost);

HttpEntity entity = response.getEntity();

if (entity != null) {

String resContent = EntityUtils.toString(entity, "UTF-8");

return JSONObject.parseObject(resContent);

}

return null;

}

}

第四步

编写加密工具类(MD5),该工具类直接使用官方文档中给出的java Demo中的MD5

以下是MD5工具类 MD5 code:

import java.io.;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

/

MD5加密工具

/

public class MD5 {

// 首先初始化一个字符数组,用来存放每个16进制字符

private static final char【】 hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',

'e', 'f' };

/

获得一个字符串的MD5值

@param input 输入的字符串

@return 输入字符串的MD5值

/

public static String md5(String input) throws UnsupportedEncodingException {

if (input == null)

return null;

try {

// 拿到一个MD5转换器(如果想要SHA1参数换成”SHA1”)

MessageDigest messageDigest = MessageDigest.getInstance("MD5");

// 输入的字符串转换成字节数组

byte【】 inputByteArray = input.getBytes("utf-8");

// inputByteArray是输入字符串转换得到的字节数组

messageDigest.update(inputByteArray);

// 转换并返回结果,也是字节数组,包含16个元素

byte【】 resultByteArray = messageDigest.digest();

// 字符数组转换成字符串返回

return byteArrayToHex(resultByteArray);

} catch (NoSuchAlgorithmException e) {

return null;

}

}

/

获取文件的MD5值

@param file

@return

/

public static String md5(File file) {

try {

if (!file.isFile()) {

System.err.println("文件" + file.getAbsolutePath() + "不存在或者不是文件");

return null;

}

FileInputStream in = new FileInputStream(file);

String result = md5(in);

in.close();

return result;

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

public static String md5(InputStream in) {

try {

MessageDigest messagedigest = MessageDigest.getInstance("MD5");

byte【】 buffer = new byte【1024】;

int read = 0;

while ((read = in.read(buffer)) != -1) {

messagedigest.update(buffer, 0, read);

}

in.close();

String result = byteArrayToHex(messagedigest.digest());

return result;

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

private static String byteArrayToHex(byte【】 byteArray) {

// new一个字符数组,这个就是用来组成结果字符串的(解释一下:一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方))

char【】 resultCharArray = new char【byteArray.length 2】;

// 遍历字节数组,通过位运算(位运算效率高),转换成字符放到字符数组中去

int index = 0;

for (byte b : byteArray) {

resultCharArray【index++】 = hexDigits【b ]> 4 0xf】;

resultCharArray【index++】 = hexDigits【b 0xf】;

}

// 字符数组组合成字符串返回

return new String(resultCharArray);

}

}

第五步

编写百度翻译接收返回结果实体,以及翻译api工具类。1.在请求翻译api时,需传给接口6个参数。如下表格

这里需要提一下官方文档中的注意事项

注意:

1、请先将需要翻译的文本转换为UTF-8编码

2、在发送HTTP请求之前需要对各字段做URL encode。

3、在生成签名拼接 appid+q+salt+密钥 字符串时,q不需要做URL encode,在生成签名之后,发送HTTP请求之前才需要对要发送的待翻译文本字段q做URL encode。

2.请求成功过后的返回结果。如下表格

以下是翻译接收实体类 TransData code:

说明这里使用lombok中@Data注解实体类,用来省略编写setter getter方法,如果阅读者没有Lombok插件,将注解去掉,自行编写setter getter方法:

import lombok.Data;

/

百度翻译结果 data

/

@Data

public class TransData {

/

原文

/

private String src;

/

译文

/

private String dst;

}

以下是翻译接收实体类 code:

import lombok.Data;

import java.util.List;

/

翻译结果 实体

/

@Data

public class TransResult {

/

翻译源语言

/

private String from;

/

译文语言

/

private String to;

/

翻译结果

/

private List trans_result;

}

以下是翻译api工具类 code:

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONObject;

import com.example.demo.vo.TransResult;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import java.net.URLEncoder;

import java.util.HashMap;

import java.util.Map;

/

百度翻译api

/

public class TranslateUtil {

/

百度翻译接口地址

/

private static final String TRANS_API_HOST = "";

private static String appid="第二步获得appid";

private static String securityKey="第二步获得securityKey";

/

获得翻译结果

@param query

@param from

@param to

@return

@throws IOException

*/

public static String getTransResult(String query, String from, String to) throws IOException {

Map params = buildParams(query, from, to);

JSONObject jsonObject;

//当请求翻译内容过长 用post

if (query.length() >= 2000) {

//post 请求方式

jsonObject = HttpUtil.doPostStr(TRANS_API_HOST, params);

} else {

// get请求方式

String url = getUrlWithQueryString(TRANS_API_HOST, params);

jsonObject = HttpUtil.doGetStr(url);

}

if (jsonObject.get("error_code")!=null) {

return "翻译失败,原因:"+jsonObject.get("error_msg");

}else{

TransResult transResult = JSON.parseObject(jsonObject.toString(), TransResult.class);

return " 翻译结果 "+transResult.getTrans_result().get(0).getDst();

}

}

/

构建参数map

*

相关文章
|
2月前
|
缓存 API 定位技术
使用Python调用百度地图API实现地址查询
使用Python调用百度地图API实现地址查询
176 0
|
12月前
|
机器学习/深度学习 人工智能 PHP
百度AI开发平台图像增强与特效API-SDK接口PHP实战记录
百度AI开发平台图像增强与特效API-SDK接口PHP实战记录
109 0
百度AI开发平台图像增强与特效API-SDK接口PHP实战记录
|
11月前
|
定位技术 API 开发工具
Android 按照步骤接入百度地图API,定位显示不了解决办法
Android 按照步骤接入百度地图API,定位显示不了解决办法
278 0
|
12月前
|
数据可视化 搜索推荐 JavaScript
数据可视化大屏百度地图区域掩膜MapMask实现地图指定区域非省市县行政区显示的实战案例解析(JavaScript API GL、个性化地图定制、指定区域经纬度拾取转化)
数据可视化大屏百度地图区域掩膜MapMask实现地图指定区域非省市县行政区显示的实战案例解析(JavaScript API GL、个性化地图定制、指定区域经纬度拾取转化)
753 0
|
2月前
|
定位技术 API
Angular 调用导入百度地图API接口,2024春招BAT面试真题详解
Angular 调用导入百度地图API接口,2024春招BAT面试真题详解
|
12月前
|
JavaScript 前端开发 API
python对接API二次开发高级实战案例解析:百度地图Web服务API封装函数(行政区划区域检索、地理编码、国内天气查询、IP定位、坐标转换)
python对接API二次开发高级实战案例解析:百度地图Web服务API封装函数(行政区划区域检索、地理编码、国内天气查询、IP定位、坐标转换)
315 0
|
2月前
|
自然语言处理 API 语音技术
Python加百度语音API实现文字转语音功能
Python加百度语音API实现文字转语音功能
88 0
|
12月前
|
移动开发 JavaScript 前端开发
数据可视化大屏百度地图手机端标注开发实战案例解析(jsAPI接口、标注分类图片、文本标签、分类筛选、自适应高度信息弹窗、PHP后端API)
数据可视化大屏百度地图手机端标注开发实战案例解析(jsAPI接口、标注分类图片、文本标签、分类筛选、自适应高度信息弹窗、PHP后端API)
168 0
|
12月前
|
定位技术 API 容器
百度地图API开发:停车场分布标注和检索静态版
百度地图API开发:停车场分布标注和检索静态版
109 0
|
7月前
|
定位技术 API
百度地图API的使用教程以及案例(二)
百度地图API的使用教程以及案例