Karena Google Translate API perlu diisi, saya memikirkan cara untuk mencurinya.
1. Gunakan HttpClient untuk mengirim permintaan http://translate.google.com
2. Kemudian gunakan Jsoupparse html untuk mengekstrak teks terjemahan.
Copy kode kodenya sebagai berikut:
/**
* Hak Cipta (c) blackbear, Inc Semua Hak Dilindungi Undang-Undang.
*/
paket org.bb.util.i18n;
impor java.io.InputStream;
impor java.net.URLEncoder;
impor java.text.MessageFormat;
import org.apache.commons.io.IOUtils;
import org.bb.util.net.http.HttpClientUtil;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
/**
* TerjemahkanUtil
*
* <pre>Alat terjemahan
*PS: melalui Google Translate
* </pra>
*
* @penulis catty
* @versi 1.0, Dibuat pada 2011/9/2
*/
kelas publik TranslateUtil {
String final statis yang dilindungi URL_TEMPLATE = "http://translate.google.com/?langpair={0}&text={1}";
String akhir statis yang dilindungi ID_RESULTBOX = "result_box";
ENCODING String akhir statis yang dilindungi = "UTF-8";
protected static final String AUTO = "auto"; // google menentukan sendiri sistem sumber
String akhir statis yang dilindungi TAIWAN = "zh-TW"; // Bahasa Cina Tradisional
String akhir statis yang dilindungi CHINA = "zh-CN";
String akhir statis yang dilindungi ENGLISH = "en"; // Bahasa Inggris
String akhir statis yang dilindungi JAPAN = "ja"; // hari
/**
* <pre>diterjemahkan oleh Google
*PS: Serahkan pada Google untuk menentukan sistem sumber
* </pra>
*
* @param teks
* @param target_lang sistem target
* @kembali
* @throwsException
*/
terjemahan String statis publik (teks String terakhir, Target_lang String akhir) memunculkan Pengecualian {
kembalikan terjemahan(teks, AUTO, target_lang);
}
/**
* <pre>diterjemahkan Google</pre>
*
* @param teks
* @param src_lang sistem sumber
* @param target_lang sistem target
* @kembali
* @throwsException
*/
terjemahan String statis publik (teks String terakhir, String akhir src_lang, String akhir target_lang)
melempar Pengecualian {
InputStream adalah = nol;
Dokumen dokumen = null;
Elemen elemen = null;
mencoba {
// membuat string URL
String url = Format Pesan.format(URL_TEMPLATE,
URLEncoder.encode(src_lang + "|" + target_lang, ENCODING),
URLEncoder.encode(teks, ENCODING));
// sambungkan & unduh html
adalah = HttpClientUtil.downloadAsStream(url);
// parsing html oleh Jsoup
doc = Jsoup.parse(adalah, ENCODING, "");
ele = doc.getElementById(ID_RESULTBOX);
Hasil string = ele.text();
hasil pengembalian;
} Akhirnya {
IOUtils.closeQuietly(adalah);
adalah = nol;
dokumen = nol;
elemen = nol;
}
}
/**
* <pre>Terjemahan Google: Mandarin-->Cina Tradisional</pre>
*
* @param teks
* @kembali
* @throwsException
*/
String statis publik cn2tw (teks String terakhir) memunculkan Pengecualian {
return Translate (teks, CINA, TAIWAN);
}
/**
* <pre>Terjemahan Google: Mandarin Tradisional-->中文</pre>
*
* @param teks
* @kembali
* @throwsException
*/
String statis publik tw2cn (teks String terakhir) memunculkan Pengecualian {
return Translate (teks, TAIWAN, CHINA);
}
/**
* <pre>Terjemahan Google: Inggris-->Mandarin Tradisional</pre>
*
* @param teks
* @kembali
* @throwsException
*/
public static String en2tw(teks String terakhir) memunculkan Pengecualian {
return Translate(teks, BAHASA INGGRIS, TAIWAN);
}
/**
* <pre>Terjemahan Google: Mandarin Tradisional-->Inggris</pre>
*
* @param teks
* @kembali
* @throwsException
*/
String statis publik tw2en (teks String terakhir) memunculkan Pengecualian {
return Translate(teks, TAIWAN, BAHASA INGGRIS);
}
/**
* <pre>Terjemahan Google: Jepang-->Cina Tradisional</pre>
*
* @param teks
* @kembali
* @throwsException
*/
String statis publik jp2tw (teks String terakhir) memunculkan Pengecualian {
return Translate (teks, JEPANG, TAIWAN);
}
/**
* <pre>Terjemahan Google: Mandarin Tradisional-->Jepang</pre>
*
* @param teks
* @kembali
* @throwsException
*/
String statis publik tw2jp(teks String terakhir) memunculkan Pengecualian {
return Translate (teks, TAIWAN, JEPANG);
}
}
HttpClientUtil.java
Copy kode kodenya sebagai berikut:
/**
* Hak Cipta (c) Blackbear, Inc Semua Hak Dilindungi Undang-Undang.
*/
paket org.bb.util.net.http;
impor java.io.BufferedInputStream;
impor java.io.File;
impor java.io.FileOutputStream;
impor java.io.InputStream;
import java.util.Map;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.BufferedHttpEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.params.BasicHttpParams;
/**
*PostUtil.java
*
* @penulis catty
* @versi 1.0, Dibuat pada 20/2/2008
*/
kelas publik HttpClientUtil {
Log log statis yang dilindungi = LogFactory.getLog(HttpClientUtil.class);
dilindungi statis HttpClient httpclient = null;
dilindungi statis int maxTotal = 200;
dilindungi statis int maxPerRoute = 20;
protected static String userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, seperti Gecko) Chrome/16.0.912.77 Safari/535.7";
statis {
jika (httpklien == nol) {
// ~~~~~~~~~~~~~~~~~~~~
// buat httpclient
// ~~~~~~~~~~~~~~~~~~~~
Registrasi SchemeRegistry = SchemeRegistry baru();
reg.register(Skema baru("http", 80, PlainSocketFactory.getSocketFactory()));
reg.register(Skema baru("https", 443, SSLSocketFactory.getSocketFactory()));
ThreadSafeClientConnManager cm = baru ThreadSafeClientConnManager(reg);
cm.setMaxTotal(maxTotal);
cm.setDefaultMaxPerRoute(maxPerRoute);
httpklien = baru DefaultHttpClient(cm);
}
}
/**
* <pre>Kembali ke Inputstream lain kali</pre>
*
* @param url
* @kembali
* @throwsException
*/
InputStream statis publik downloadAsStream(String url) memunculkan Pengecualian {
InputStream adalah = (InputStream) unduh(url, null, null, false);
kembali adalah;
}
/**
* <pre>Simpan ke File setelah mengunduh</pre>
*
* @param url
* @param simpanFile
* @throwsException
*/
unduhan public static void (String url, File saveFile) memunculkan Pengecualian {
unduh(url, simpanFile, null, false);
}
/**
* <pre>下</pre>
*
* @param url
* @param simpanFile
* @param param
* @param isPost
* @return Jika saveFile==null kembali ke inputstream, jika tidak, kembali ke saveFile
* @throwsException
*/
pengunduhan Objek statis publik (url String terakhir, File saveFile akhir, parameter Map<String, String> akhir,
boolean terakhir isPost) memunculkan Pengecualian {
boolean saveToFile = simpanFile != null;
// periksa direktori yang ada ??
jika (saveToFile && saveFile.getParentFile().exists() == false) {
saveFile.getParentFile().mkdirs();
}
Pengecualian salah = nol;
Permintaan HttpRequestBase = nol;
Respons HttpResponse = null;
Entitas HttpEntity = null;
FileOutputStream fos = null;
Hasil objek = null;
mencoba {
//buat permintaan
jika (isPost) {
permintaan = HttpPost baru(url);
} kalau tidak {
permintaan = HttpGet baru(url);
}
// tambahkan header & parameter
addHeaderAndParams(permintaan, params);
// menghubungkan
respon = httpclient.execute(permintaan);
entitas = respon.getEntity();
entitas = new BufferedHttpEntity(entitas);
//mendapatkan hasil
if (saveToFile) {// simpan ke disk
fos = FileOutputStream baru(simpanFile);
IOUtils.copy(entity.getContent(), fos);
hasil = simpanFile;
} else { // warp ke inputstream
hasil = new BufferedInputStream(entity.getContent());
}
} tangkapan (Pengecualian e) {
salah = e;
} Akhirnya {
// menutup
IOUtils.closeQuietly(fos);
// jernih
permintaan = batal;
tanggapan = nol;
entitas = nol;
jika (err != batal) {
membuang kesalahan;
}
hasil pengembalian;
}
}
dilindungi static void addHeaderAndParams(permintaan HttpRequestBase akhir, parameter Map<String, String> akhir) {
// tambahkan tajuk bawaan
request.addHeader("Agen-Pengguna", Agen-pengguna);
// tambahkan param
jika (param != null) {
// peta --> HttpParams
BasicHttpParams myParams = BasicHttpParams baru();
untuk (Kunci string : params.keySet()) {
myParams.setParameter(kunci, params.get(kunci));
}
permintaan.setParams(myParams);
}
}
HttpClient statis publik getHttpclient() {
kembalikan httpklien;
}
public static void setHttpclient(HttpClient httpclient) {
HttpClientUtil.httpclient = httpclient;
}
publik statis int getMaxTotal() {
kembalikan maksTotal;
}
public static void setMaxTotal(int maxTotal) {
HttpClientUtil.maxTotal = maxTotal;
}
publik statis int getMaxPerRoute() {
kembalikan maxPerRoute;
}
public static void setMaxPerRoute(int maxPerRoute) {
HttpClientUtil.maxPerRoute = maxPerRoute;
}
String statis publik getUserAgent() {
kembalikan agen pengguna;
}
public static void setUserAgent(String userAgent) {
HttpClientUtil.userAgent = agen pengguna;
}
}