通过httpClient实现google翻译

本文介绍了如何通过Maven依赖引入HTTPClient库,利用Google翻译API实现文本翻译,并提供了翻译工具类、HTTPClient管理类、语言枚举以及测试类的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过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
public class TranslateUtil {
 
     private static Log logger = LogFactory.getLog(TranslateUtil. class );
 
     private static final String URL_TEMPLATE = "http://translate.google.cn/translate_a/single?client=t" ;
     private static final String ENCODING = "UTF-8" ;
 
     private DefaultHttpClient client;
 
     private static TranslateUtil translateUtil = new TranslateUtil();
 
     private TranslateUtil() {
         client = ConnectionManager.getHttpClient();
     }
 
     public static TranslateUtil getInstance() {
         return translateUtil;
     }
 
     /**
      * google翻译(文本自动识别)
      *
      * @param text
      *            要翻译的文本
      * @param target_lang
      *            目标语言
      * @return
      * @throws Exception
      */
     public String translate( final String text, final String target_lang) {
         return translate(text, Language.AUTO.getValue(), target_lang);
     }
 
     /**
      * 中午转为英文
      *
      * @param text
      * @return
      */
     public String cn2en( final String text) {
         return translate(text, Language.CHINA.getValue(),
                 Language.ENGLISH.getValue());
     }
 
     /**
      * 英文转中文
      *
      * @param text
      * @return
      */
     public String en2cn( final String text) {
         return translate(text, Language.ENGLISH.getValue(),
                 Language.CHINA.getValue());
     }
 
     /**
      * google翻译
      *
      * @param text
      *            要翻译的文本
      * @param src_lang
      *            源文本语言
      * @param target_lang
      *            目标语言
      * @return
      * @throws Exception
      */
     public String translate( final String text, final String src_lang,
             final String 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 = new HttpGet(url);
             HttpResponse response = client.execute(get);
             String allInfo = EntityUtils.toString(response.getEntity());
             String resultArray[] = allInfo.split( "]]" )[ 0 ].split( "]" );
             for ( int i = 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);
         }
         return result;
     }
}

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
public class ConnectionManager {
     /** 连接超时时间 */
     static final int TIMEOUT = 30000 ;
     /** 数据传输超时 */
     static final int SO_TIMEOUT = 30000 ;
 
     static String UA = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1"
             + " (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1" ;
 
     private ConnectionManager() {
 
     }
 
     public static DefaultHttpClient getHttpClient() {
         SchemeRegistry schemeRegistry = new SchemeRegistry();
         schemeRegistry.register( new Scheme( "http" , 80 , PlainSocketFactory
                 .getSocketFactory()));
         schemeRegistry.register( new Scheme( "https" , 443 , SSLSocketFactory
                 .getSocketFactory()));
 
         PoolingClientConnectionManager cm = new PoolingClientConnectionManager(
                 schemeRegistry);
         cm.setMaxTotal( 500 );
         cm.setDefaultMaxPerRoute( 200 );
 
         HttpParams params = new BasicHttpParams();
         params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, TIMEOUT);
         params.setParameter(CoreConnectionPNames.SO_TIMEOUT, SO_TIMEOUT);
         params.setParameter(CoreProtocolPNames.USER_AGENT, UA);
 
         DefaultHttpClient client = new DefaultHttpClient(cm, params);
         return client;
     }
}

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
public enum Language {
 
     AUTO( "自动" , "auto" ), //
     TAIWAN( "台湾" , "zh-TW" ), //
     CHINA( "中文" , "zh-CN" ), //
     ENGLISH( "英语" , "en" ), //
     JAPAN( "日文" , "ja" ); //
 
     private String name;
     private String value;
 
     private Language(String name, String value) {
         this .name = name;
         this .value = value;
     }
 
     public String getName() {
         return name;
     }
 
     public void setName(String name) {
         this .name = name;
     }
 
     public String getValue() {
         return value;
     }
 
     public void setValue(String value) {
         this .value = value;
     }
 
}

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值