激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

香港云服务器
服務器之家 - 編程語言 - JAVA教程 - 使用httpclient實現免費的google翻譯api

使用httpclient實現免費的google翻譯api

2019-11-04 14:13java技術網 JAVA教程

這篇文章主要介紹了使用httpclient實現免費的google翻譯api的方法,大家參考使用吧

由於Google translate API要收錢 ,因此想了一個偷機的方法

1. 用HttpClient發送一個request給http://translate.google.com

2. 再用Jsoup來parse html, 並取出翻譯後的文字

 

復制代碼代碼如下:


/**
 * Copyright (c) blackbear, Inc All Rights Reserved.
 */
package org.bb.util.i18n;

 

import java.io.InputStream;
import java.net.URLEncoder;
import 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;

/**
 * TranslateUtil
 * 
 * <pre>翻譯工具
 * PS: 透過google translate
 * </pre>
 * 
 * @author catty
 * @version 1.0, Created on 2011/9/2
 */
public class TranslateUtil {

 protected static final String URL_TEMPLATE = "http://translate.google.com/?langpair={0}&text={1}";
 protected static final String ID_RESULTBOX = "result_box";
 protected static final String ENCODING = "UTF-8";

 protected static final String AUTO = "auto"; // google自動判斷來源語系
 protected static final String TAIWAN = "zh-TW"; // 繁中
 protected static final String CHINA = "zh-CN"; // 簡中
 protected static final String ENGLISH = "en"; // 英
 protected static final String JAPAN = "ja"; // 日

 /**
  * <pre>Google翻譯
  * PS: 交由google自動判斷來源語系
  * </pre>
  * 
  * @param text
  * @param target_lang 目標語系
  * @return
  * @throws Exception
  */
 public static String translate(final String text, final String target_lang) throws Exception {
  return translate(text, AUTO, target_lang);
 }

 /**
  * <pre>Google翻譯</pre>
  * 
  * @param text
  * @param src_lang 來源語系
  * @param target_lang 目標語系
  * @return
  * @throws Exception
  */
 public static String translate(final String text, final String src_lang, final String target_lang)
   throws Exception {
  InputStream is = null;
  Document doc = null;
  Element ele = null;
  try {
   // create URL string
   String url = MessageFormat.format(URL_TEMPLATE,
     URLEncoder.encode(src_lang + "|" + target_lang, ENCODING),
     URLEncoder.encode(text, ENCODING));

   // connect & download html
   is = HttpClientUtil.downloadAsStream(url);

   // parse html by Jsoup
   doc = Jsoup.parse(is, ENCODING, "");
   ele = doc.getElementById(ID_RESULTBOX);
   String result = ele.text();
   return result;

  } finally {
   IOUtils.closeQuietly(is);
   is = null;
   doc = null;
   ele = null;
  }
 }

 /**
  * <pre>Google翻譯: 簡中-->繁中</pre>
  * 
  * @param text
  * @return
  * @throws Exception
  */
 public static String cn2tw(final String text) throws Exception {
  return translate(text, CHINA, TAIWAN);
 }

 /**
  * <pre>Google翻譯: 繁中-->簡中</pre>
  * 
  * @param text
  * @return
  * @throws Exception
  */
 public static String tw2cn(final String text) throws Exception {
  return translate(text, TAIWAN, CHINA);
 }

 /**
  * <pre>Google翻譯: 英文-->繁中</pre>
  * 
  * @param text
  * @return
  * @throws Exception
  */
 public static String en2tw(final String text) throws Exception {
  return translate(text, ENGLISH, TAIWAN);
 }

 /**
  * <pre>Google翻譯: 繁中-->英文</pre>
  * 
  * @param text
  * @return
  * @throws Exception
  */
 public static String tw2en(final String text) throws Exception {
  return translate(text, TAIWAN, ENGLISH);
 }

 /**
  * <pre>Google翻譯: 日文-->繁中</pre>
  * 
  * @param text
  * @return
  * @throws Exception
  */
 public static String jp2tw(final String text) throws Exception {
  return translate(text, JAPAN, TAIWAN);
 }

 /**
  * <pre>Google翻譯: 繁中-->日</pre>
  * 
  * @param text
  * @return
  * @throws Exception
  */
 public static String tw2jp(final String text) throws Exception {
  return translate(text, TAIWAN, JAPAN);
 }
}

 

HttpClientUtil.java

 

復制代碼代碼如下:


/**
 * Copyright (c) Blackbear, Inc All Rights Reserved.
 */
package org.bb.util.net.http;

 

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import 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
 * 
 * @author catty
 * @version 1.0, Created on 2008/2/20
 */
public class HttpClientUtil {

 protected static Log log = LogFactory.getLog(HttpClientUtil.class);
 protected static HttpClient httpclient = null;
 protected static int maxTotal = 200;
 protected static int maxPerRoute = 20;
 protected static String userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7";

 static {
  if (httpclient == null) {
   // ~~~~~~~~~~~~~~~~~~~~
   // create httpclient
   // ~~~~~~~~~~~~~~~~~~~~
   SchemeRegistry reg = new SchemeRegistry();
   reg.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));
   reg.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()));
   ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(reg);
   cm.setMaxTotal(maxTotal);
   cm.setDefaultMaxPerRoute(maxPerRoute);
   httpclient = new DefaultHttpClient(cm);
  }
 }

 /**
  * <pre>下載後回傳Inputstream</pre>
  * 
  * @param url
  * @return
  * @throws Exception
  */
 public static InputStream downloadAsStream(String url) throws Exception {
  InputStream is = (InputStream) download(url, null, null, false);
  return is;
 }

 /**
  * <pre>下載後儲存到File</pre>
  * 
  * @param url
  * @param saveFile
  * @throws Exception
  */
 public static void download(String url, File saveFile) throws Exception {
  download(url, saveFile, null, false);
 }

 /**
  * <pre>下載</pre>
  * 
  * @param url
  * @param saveFile
  * @param params
  * @param isPost
  * @return 如果saveFile==null則回傳inputstream, 否則回傳saveFile
  * @throws Exception
  */
 public static Object download(final String url, final File saveFile, final Map<String, String> params,
   final boolean isPost) throws Exception {

  boolean saveToFile = saveFile != null;

  // check dir exist ??
  if (saveToFile && saveFile.getParentFile().exists() == false) {
   saveFile.getParentFile().mkdirs();
  }

  Exception err = null;
  HttpRequestBase request = null;
  HttpResponse response = null;
  HttpEntity entity = null;
  FileOutputStream fos = null;
  Object result = null;

  try {
   // create request
   if (isPost) {
    request = new HttpPost(url);
   } else {
    request = new HttpGet(url);
   }

   // add header & params
   addHeaderAndParams(request, params);

   // connect
   response = httpclient.execute(request);
   entity = response.getEntity();
   entity = new BufferedHttpEntity(entity);

   // get result
   if (saveToFile) {// save to disk
    fos = new FileOutputStream(saveFile);
    IOUtils.copy(entity.getContent(), fos);
    result = saveFile;
   } else { // warp to inpustream
    result = new BufferedInputStream(entity.getContent());
   }

  } catch (Exception e) {
   err = e;
  } finally {

   // close
   IOUtils.closeQuietly(fos);

   // clear
   request = null;
   response = null;
   entity = null;

   if (err != null) {
    throw err;
   }

   return result;
  }

 }

 protected static void addHeaderAndParams(final HttpRequestBase request, final Map<String, String> params) {
  // add default header
  request.addHeader("User-Agent", userAgent);

  // add params
  if (params != null) {

   // map --> HttpParams
   BasicHttpParams myParams = new BasicHttpParams();
   for (String key : params.keySet()) {
    myParams.setParameter(key, params.get(key));
   }

   request.setParams(myParams);
  }
 }

 public static HttpClient getHttpclient() {
  return httpclient;
 }

 public static void setHttpclient(HttpClient httpclient) {
  HttpClientUtil.httpclient = httpclient;
 }

 public static int getMaxTotal() {
  return maxTotal;
 }

 public static void setMaxTotal(int maxTotal) {
  HttpClientUtil.maxTotal = maxTotal;
 }

 public static int getMaxPerRoute() {
  return maxPerRoute;
 }

 public static void setMaxPerRoute(int maxPerRoute) {
  HttpClientUtil.maxPerRoute = maxPerRoute;
 }

 public static String getUserAgent() {
  return userAgent;
 }

 public static void setUserAgent(String userAgent) {
  HttpClientUtil.userAgent = userAgent;
 }
}

 

 

延伸 · 閱讀

精彩推薦
596
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 91在线视频网址 | 久久欧美亚洲另类专区91大神 | 久久久久久久久国产 | 免费的性生活视频 | 欧美成在线视频 | 91久久国产 | av在线播放免费 | 男女无套免费视频 | 少妇激情视频 | 精品久久久一二三区播放播放播放视频 | 久久91精品 | 欧美在线黄色 | 成人男女免费视频 | 爱草成年 | 黄色网址入口 | av在线中文| 国产欧美亚洲精品 | 亚洲视频高清 | 午夜亚洲影院 | 久久久成人免费视频 | 在线a | 亚洲视频在线观看免费 | 国产精品91久久久 | 亚洲白嫩在线观看 | 看91| 3344永久免费| 广州毛片 | 国产美女精品视频 | 中文字幕h| 久久亚洲精品国产一区 | 日本在线免费观看 | 欧美成人区 | 91精彩视频| 九色国产 | 黄色大片在线免费观看 | 久久在线精品 | 羞羞视频免费入口网站 | 成人免费观看毛片 | 国产精品久久久久久久久久大牛 | 日本精品婷婷久久爽一下 | 一级黄色大片在线观看 |