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;
    }

}