通过httpClient实现google翻译

来源:互联网 发布:阿里云ecs ssh 编辑:程序博客网 时间:2024/06/05 02:02

通过httpClient实现google翻译

google翻译   各国简写表
https://developers.google.com/translate/v2/using_rest    


1. [代码]maven依赖     

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.2.1</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.2.1</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

2. [代码]翻译工具类     

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
publicclass TranslateUtil {
 
    privatestatic Log logger = LogFactory.getLog(TranslateUtil.class);
 
    privatestatic final String URL_TEMPLATE = "http://translate.google.cn/translate_a/single?client=t";
    privatestatic final String ENCODING = "UTF-8";
 
    privateDefaultHttpClient client;
 
    privatestatic TranslateUtil translateUtil = newTranslateUtil();
 
    privateTranslateUtil() {
        client = ConnectionManager.getHttpClient();
    }
 
    publicstatic TranslateUtil getInstance() {
        returntranslateUtil;
    }
 
    /**
     * google翻译(文本自动识别)
     *
     * @param text
     *            要翻译的文本
     * @param target_lang
     *            目标语言
     * @return
     * @throws Exception
     */
    publicString translate(finalString text, finalString target_lang) {
        returntranslate(text, Language.AUTO.getValue(), target_lang);
    }
 
    /**
     * 中午转为英文
     *
     * @param text
     * @return
     */
    publicString cn2en(finalString text) {
        returntranslate(text, Language.CHINA.getValue(),
                Language.ENGLISH.getValue());
    }
 
    /**
     * 英文转中文
     *
     * @param text
     * @return
     */
    publicString en2cn(finalString text) {
        returntranslate(text, Language.ENGLISH.getValue(),
                Language.CHINA.getValue());
    }
 
    /**
     * google翻译
     *
     * @param text
     *            要翻译的文本
     * @param src_lang
     *            源文本语言
     * @param target_lang
     *            目标语言
     * @return
     * @throws Exception
     */
    publicString translate(finalString text, finalString src_lang,
            finalString target_lang) {
        String result = null;
        try{
            String url = URL_TEMPLATE
                    +"&sl="
                    + src_lang
                    +"&tl="
                    + target_lang
                    +"&hl="
                    + src_lang
                    +"&dt=bd&dt=ex&dt=ld&dt=md&dt=qc&dt=rw&dt=rm&dt=ss&dt=t&dt=at&dt=sw&ie="
                    + ENCODING + "&oe="+ ENCODING
                    +"&prev=btn&ssel=0&tsel=0&q="
                    + URLEncoder.encode(text, ENCODING);
 
            HttpGet get = newHttpGet(url);
            HttpResponse response = client.execute(get);
            String allInfo = EntityUtils.toString(response.getEntity());
            String resultArray[] = allInfo.split("]]")[0].split("]");
            for(inti = 0; i < resultArray.length - 1; i++) {
                resultBuffer.append(resultArray[i].split("\"")[1]);
            }
            result = resultBuffer.toString();
            result = result.replace("\\n","\r\n");
        }catch(Exception e) {
            logger.error(e);
        }
        returnresult;
    }
}

3. [代码]httpclient管理类     

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
publicclass ConnectionManager {
    /** 连接超时时间 */
    staticfinal int TIMEOUT = 30000;
    /** 数据传输超时 */
    staticfinal int SO_TIMEOUT = 30000;
 
    staticString UA = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1"
            +" (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1";
 
    privateConnectionManager() {
 
    }
 
    publicstatic DefaultHttpClient getHttpClient() {
        SchemeRegistry schemeRegistry = newSchemeRegistry();
        schemeRegistry.register(newScheme("http",80, PlainSocketFactory
                .getSocketFactory()));
        schemeRegistry.register(newScheme("https",443, SSLSocketFactory
                .getSocketFactory()));
 
        PoolingClientConnectionManager cm = newPoolingClientConnectionManager(
                schemeRegistry);
        cm.setMaxTotal(500);
        cm.setDefaultMaxPerRoute(200);
 
        HttpParams params = newBasicHttpParams();
        params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, TIMEOUT);
        params.setParameter(CoreConnectionPNames.SO_TIMEOUT, SO_TIMEOUT);
        params.setParameter(CoreProtocolPNames.USER_AGENT, UA);
 
        DefaultHttpClient client = newDefaultHttpClient(cm, params);
        returnclient;
    }
}

4. [代码]语言枚举     

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
publicenum Language {
 
    AUTO("自动","auto"),//
    TAIWAN("台湾","zh-TW"),//
    CHINA("中文","zh-CN"),//
    ENGLISH("英语","en"),//
    JAPAN("日文","ja");//
 
    privateString name;
    privateString value;
 
    privateLanguage(String name, String value) {
        this.name = name;
        this.value = value;
    }
 
    publicString getName() {
        returnname;
    }
 
    publicvoid setName(String name) {
        this.name = name;
    }
 
    publicString getValue() {
        returnvalue;
    }
 
    publicvoid setValue(String value) {
        this.value = value;
    }
 
}

5. [代码]测试类     跳至 [1] [2] [3] [4] [5] [全屏预览]

?
1
2
3
4
5
6
7
publicclass Test {
 
    publicstatic void main(String[] args) throwsException {
        System.out.println(TranslateUtil.getInstance().translate("你的名字叫什么",
                Language.CHINA.getValue(), Language.ENGLISH.getValue()));
    }
}

0 0
原创粉丝点击