Java 使用百度翻译-通用翻译API

笔者近期开发eclipse插件时,需要用到中译英的功能,所以就研究了一下百度翻译. 百度翻译开放平台为广大开发者提供了开发服务的平台,但是并不是免费的.百度翻译是按字符计费的,每个月200万字符内是免费的, 超过200万字符之后,以单价49元/百万字符收费.

1. 注册开发者账号

使用百度翻译API之前,需要自助注册百度-翻译开放平台的API, 注册只需要使用手机号注册即可.笔者注册的是个人开发者, 注册完之后可以在开发者信息页面查看百度翻译平台为你分配的个人账号及秘钥.

  • 注册地址: http://api.fanyi.baidu.com/api/trans/product/apiapply
  • 开发者信息: http://api.fanyi.baidu.com/api/trans/product/desktop?req=developer
  • 通用API文档: http://api.fanyi.baidu.com/api/trans/product/apidoc#joinFile

2. API 简介

2.1 API 地址

百度翻译API 提供了Http 或Https 地址, 可以通过GET 或 POST 方式进行访问, 其中https 使用的是非强制证书方式.

  • http地址: http://api.fanyi.baidu.com/api/trans/vip/translate
  • https地址: https://fanyi-api.baidu.com/api/trans/vip/translate

2.2 请求参数

百度翻译请求参数拼接方式为普通get请求参数拼接方式.但是需要注意的是,参数q必须是UTF8编码,否则翻译会报错.而且发送http请求之前需要做URL 编码.

字段 描述
q 请求翻译原文,必须是UTF-8编码,否则报错
from 翻译原文语种
to 翻译目标语种
appid 开发平台注册APPID
salt 随机数
sign 数字签名, md5(appid+q+salt+秘钥)

2.3 响应参数

当翻译报错时,会返回error_code 和 error_msg 字段; 当翻译正确时,返回正确的翻译内容.

字段 描述
error_code 错误编码,当翻译报错时有值
error_msg 错误原因, 当翻译报错时有值
from 翻译原文语种
to 翻译目标语种
trans_result 翻译列表, 数组类型
src 原文
dst 译文

3. Java Demo

笔者使用Java 创建的Maven 项目, 项目源码地址: https://download.csdn.net/download/zongf0504/10835043

3.1 核心工具类

核心类为BDTransApiUtil, 其中依赖的HttpUtil 可以自定义实现.

import java.util.List;
import org.apache.commons.codec.digest.DigestUtils;
import org.zongf.learn.baidu.translate.vo.BDTransRequest;
import org.zongf.learn.baidu.translate.vo.BDTransResponse;
import org.zongf.learn.baidu.translate.vo.BDTransResult;
import com.alibaba.fastjson.JSONObject;
   
/**
 * 百度翻译工具类
 * @ClassName: BDTransApiUtil.java
 * @author zongf
 * @date 2018年12月7日-上午11:42:26
 */
public class BDTransApiUtil {
   
	
	// 百度翻译地址
    private static final String TRANS_API_HOST = "https://api.fanyi.baidu.com/api/trans/vip/translate";

    // 百度翻译注册应用id
    private static final String APPID = "xxxxx";
    
    // 百度翻译注册秘钥
    private static final String SECURITYKEY = "xxxxx";
    
    /**
     * @Description 中文翻译成中文
     * @param chineseQuery 中文
     * @return 英文
     * @author zongf
     * @date 2018年12月7日-下午1:35:31
     */
    public static String chinese2English(String chineseQuery){
   
    	
    	 // 随机数
        long salt = System.currentTimeMillis();
        
        // 签名
        String src = APPID + chineseQuery + salt + SECURITYKEY; // 加密前的原文
        String sign = DigestUtils.md5Hex(src);
    	
        // 构造请求参数
    	BDTransRequest request = new BDTransRequest();
    	request.setFrom("zh");
    	request.setTo("en");
    	request.setAppid(APPID);
    	request.setQ(chineseQuery);
    	request.setSalt("" + salt);
    	request.setSign(sign);
    	
    	// 调用翻译API
    	String result = HttpUtil.get(TRANS_API_HOST, request.toMap());
    	
    	// 解析响应结果
    	BDTransResponse response = JSONObject.parseObject(result, BDTransResponse.class);
    	
    	// 判断错误码
    	if(response.getError_code() != null){
   
    		return "翻译报错-错误码:" + response.getError_code() + ",错误原因:" + response.getError_msg();
    	}
  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值