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