Java封装的百度翻译Api

百度没有提供直接可用的翻译api,有道倒是有,不过只能英译中,不支持其他语言。但是百度自己有个翻译服务,http://fanyi.baidu.com/,使用的时候,页面并不会刷新,而是用ajax调用了一个翻译API,分析了一下,这个api地址是http://fanyi.baidu.com/transapi,接受三个参数,from,to,query分别是源语言,目标语言,待翻译文本。
简单封装了一下,默认中译英,要改其他语言,可以把参数提出来:


package com.pocketdigi.english;

import java.net.URLEncoder;

import model.TranslateMode;

import com.google.gson.Gson;
import common.HttpGet;

public class TranslateApi {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		String dst=translate("百度翻译API测试");
		System.out.println(dst);
		
	}
	public static String translate(String source)
	{
		String api_url;
		try {
			api_url = new StringBuilder("http://fanyi.baidu.com/transapi?from=zh&to=en&query=")
			.append(URLEncoder.encode(source,"utf-8")).toString();
			String json=HttpGet.getHtml(api_url, "utf-8");
			Gson gson=new Gson();
			TranslateMode translateMode=gson.fromJson(json, TranslateMode.class);
			
			if(translateMode!=null&&translateMode.getData()!=null&&translateMode.getData().size()==1)
			{
				return translateMode.getData().get(0).getDst();
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	
}

TranslateMode:


package model;

import java.util.List;

public class TranslateMode {
	String from,to;
	List data;
	public class Data{
		String dst,src;

		public String getDst() {
			return dst;
		}

		public void setDst(String dst) {
			this.dst = dst;
		}

		public String getSrc() {
			return src;
		}

		public void setSrc(String src) {
			this.src = src;
		}
		
	}
	public String getFrom() {
		return from;
	}
	public void setFrom(String from) {
		this.from = from;
	}
	public String getTo() {
		return to;
	}
	public void setTo(String to) {
		this.to = to;
	}
	public List getData() {
		return data;
	}
	public void setData(List data) {
		this.data = data;
	}
	
}

© 2013, 冰冻鱼. 请尊重作者劳动成果,复制转载保留本站链接! 应用开发笔记

发表评论

电子邮件地址不会被公开。 必填项已用*标注