Java學習

          java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會盡力幫助解決。一起進步

           

          利用HttpClient獲取網頁內容

          import java.io.BufferedReader;
          import java.io.InputStreamReader;
          import java.io.UnsupportedEncodingException;
          import org.apache.commons.httpclient.HttpClient;
          import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
          import org.apache.commons.httpclient.NameValuePair;
          import org.apache.commons.httpclient.methods.GetMethod;
          import org.apache.commons.httpclient.methods.PostMethod;
          public class HttpClientExample {
          // 獲得ConnectionManager,設置相關參數
          private static MultiThreadedHttpConnectionManager manager = new MultiThreadedHttpConnectionManager();
          private static int connectionTimeOut = 20000;
          private static int socketTimeOut = 10000;
          private static int maxConnectionPerHost = 5;
          private static int maxTotalConnections = 40;
          // 標志初始化是否完成的flag
          private static boolean initialed = false;
          // 初始化ConnectionManger的方法
          public static void SetPara() {
          manager.getParams().setConnectionTimeout(connectionTimeOut);
          manager.getParams().setSoTimeout(socketTimeOut);
          manager.getParams().setDefaultMaxConnectionsPerHost(
          maxConnectionPerHost);
          manager.getParams().setMaxTotalConnections(maxTotalConnections);
          initialed = true;
          }
          // 通過get方法獲取網頁內容
          public static String getGetResponseWithHttpClient(String url, String encode) {
          HttpClient client = new HttpClient(manager);
          if (initialed) {
          HttpClientExample.SetPara();
          }
          GetMethod get = new GetMethod(url);
          get.setFollowRedirects(true);
          String result = null;
          StringBuffer resultBuffer = new StringBuffer();
          try {
          client.executeMethod(get);
          // 在目標頁面情況未知的條件下,不推薦使用getResponseBodyAsString()方法
          // String strGetResponseBody = post.getResponseBodyAsString();
          BufferedReader in = new BufferedReader(new InputStreamReader(get
          .getResponseBodyAsStream(), get.getResponseCharSet()));
          String inputLine = null;
          while ((inputLine = in.readLine()) != null) {
          resultBuffer.append(inputLine);
          resultBuffer.append("\n");
          }
          in.close();
          result = resultBuffer.toString();
          // iso-8859-1 is the default reading encode
          result = HttpClientExample.ConverterStringCode(resultBuffer
          .toString(), get.getResponseCharSet(), encode);
          } catch (Exception e) {
          e.printStackTrace();
          result = "";
          } finally {
          get.releaseConnection();
          return result;
          }
          }
          public static String getPostResponseWithHttpClient(String url, String encode) {
          HttpClient client = new HttpClient(manager);
          if (initialed) {
          HttpClientExample.SetPara();
          }
          PostMethod post = new PostMethod(url);
          post.setFollowRedirects(false);
          StringBuffer resultBuffer = new StringBuffer();
          String result = null;
          try {
          client.executeMethod(post);
          BufferedReader in = new BufferedReader(new InputStreamReader(post
          .getResponseBodyAsStream(), post.getResponseCharSet()));
          String inputLine = null;
          while ((inputLine = in.readLine()) != null) {
          resultBuffer.append(inputLine);
          resultBuffer.append("\n");
          }
          in.close();
          // iso-8859-1 is the default reading encode
          result = HttpClientExample.ConverterStringCode(resultBuffer
          .toString(), post.getResponseCharSet(), encode);
          } catch (Exception e) {
          e.printStackTrace();
          result = "";
          } finally {
          post.releaseConnection();
          return result;
          }
          }
          public static String getPostResponseWithHttpClient(String url,
          String encode, NameValuePair[] nameValuePair) {
          HttpClient client = new HttpClient(manager);
          if (initialed) {
          HttpClientExample.SetPara();
          }
          PostMethod post = new PostMethod(url);
          post.setRequestBody(nameValuePair);
          post.setFollowRedirects(false);
          String result = null;
          StringBuffer resultBuffer = new StringBuffer();
          try {
          client.executeMethod(post);
          BufferedReader in = new BufferedReader(new InputStreamReader(post
          .getResponseBodyAsStream(), post.getResponseCharSet()));
          String inputLine = null;
          while ((inputLine = in.readLine()) != null) {
          resultBuffer.append(inputLine);
          resultBuffer.append("\n");
          }
          in.close();
          // iso-8859-1 is the default reading encode
          result = HttpClientExample.ConverterStringCode(resultBuffer
          .toString(), post.getResponseCharSet(), encode);
          } catch (Exception e) {
          e.printStackTrace();
          result = "";
          } finally {
          post.releaseConnection();
          return result;
          }
          }
          private static String ConverterStringCode(String source, String srcEncode,
          String destEncode) {
          if (source != null) {
          try {
          return new String(source.getBytes(srcEncode), destEncode);
          } catch (UnsupportedEncodingException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          return "";
          }
          } else {
          return "";
          }
          }
          }


          之后,就可以通過下面的代碼獲得目標網頁:
          String source = HttpClientExample.getGetResponseWithHttpClient("http://www.163.com", "GBK");

          注意,在默認情況下,HttpClient的Request的Head中
          User-Agent的值是Jakarta Commons-HttpClient 3.0RC1,如果需要改變它(例如,變為Mozilla/4.0),必須在調用之前運行如下語句:
          System.getProperties().setProperty("httpclient.useragent", "Mozilla/4.0");
          zhuan:http://www.diybl.com/course/3_program/java/javajs/20090210/155102.html

          posted on 2009-04-28 09:28 找個美女做老婆 閱讀(4526) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          公告

          本blog已經搬到新家了, 新家:www.javaly.cn
           http://www.javaly.cn

          常用鏈接

          留言簿(6)

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 察雅县| 重庆市| 桃江县| 江都市| 于田县| 威远县| 郑州市| 绥化市| 大新县| 中牟县| 南木林县| 岳阳市| 襄垣县| 耒阳市| 南岸区| 比如县| 瓮安县| 牟定县| 台江县| 拜城县| 班戈县| 泰安市| 南靖县| 怀宁县| 汽车| 淳化县| 铜梁县| 南京市| 辽宁省| 枣强县| 武隆县| 稷山县| 北流市| 丰县| 宜州市| 神农架林区| 南开区| 阿勒泰市| 齐河县| 岐山县| 乌兰县|