详尽分享百度翻译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

*

相关文章
|
8月前
|
缓存 API 定位技术
使用Python调用百度地图API实现地址查询
使用Python调用百度地图API实现地址查询
449 0
|
定位技术 API 开发工具
Android 按照步骤接入百度地图API,定位显示不了解决办法
Android 按照步骤接入百度地图API,定位显示不了解决办法
402 1
|
2月前
|
新能源 API
百科-百度免费API接口教程
该接口用于从百度百科获取指定名词的基础解释。支持POST或GET请求,需提供用户ID、用户KEY及查询内容。返回状态码和解释内容或错误提示。示例:https://cn.apihz.cn/api/zici/baikebaidu.php?id=88888888&key=88888888&words=汽车。建议使用个人ID与KEY以享受更高调用频次。
|
2月前
|
API
表情包-百度版免费API接口教程
该接口用于通过指定关键词从百度渠道获取表情包,支持POST或GET请求。需提供用户ID和KEY,可选参数包括关键词、页码及结果数量。返回数据包含状态码、信息提示、结果集等。示例中ID与KEY为公共测试用,建议使用个人ID与KEY以享受更高调用频率。
|
2月前
|
API
通用图片搜索-百度源免费API接口教程
该接口用于搜索百度图片,支持通过关键词、页码、结果数量等参数获取图片搜索结果。请求方式为POST或GET,需提供用户ID和KEY,可选参数包括关键词、页码、结果数量及返回源类型。返回结果包含状态码、信息提示、结果集、当前页码、最大页码和结果数量。示例中提供了GET和POST请求方法及返回数据示例。
|
3月前
|
存储 安全 Java
jdk21的外部函数和内存API(MemorySegment)(官方翻译)
本文介绍了JDK 21中引入的外部函数和内存API(MemorySegment),这些API使得Java程序能够更安全、高效地与JVM外部的代码和数据进行互操作,包括调用外部函数、访问外部内存,以及使用不同的Arena竞技场来分配和管理MemorySegment。
80 1
jdk21的外部函数和内存API(MemorySegment)(官方翻译)
|
3月前
|
IDE API 定位技术
Python--API编程:IP地址翻译成实际的物理地址
Python--API编程:IP地址翻译成实际的物理地址
73 0
|
5月前
|
API 数据库 索引
indexedDB 操作库IDBWRAPPER 教程翻译及API翻译第二部分part2
indexedDB 操作库IDBWRAPPER 教程翻译及API翻译第二部分part2
|
5月前
|
JavaScript 前端开发 定位技术
百度地图JavaScript API v2.0创建地图
百度地图JavaScript API v2.0创建地图
79 0
|
6月前
|
JavaScript 前端开发 定位技术
vue 使用 vue-jsonp 解决跨域请求问题(访问百度地图API)
vue 使用 vue-jsonp 解决跨域请求问题(访问百度地图API)
305 0