<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,comments - 227,trackbacks - 0
    HTTP協(xié)議是目前互聯(lián)網(wǎng)上最重要的協(xié)議,許多軟件與服務(wù)都需要依賴HTTP協(xié)議。
    雖然java.net這個(gè)package中包含了對(duì)HTTP的基本支持,但還有很多高級(jí)和復(fù)雜的功能無法實(shí)現(xiàn),這不能不說是一個(gè)遺憾。
    JAVA機(jī)網(wǎng)[www.cnjm.net]
    HttpClient作為Apache的開源項(xiàng)目項(xiàng)目之一,為基于HTTP協(xié)議的操作提供了強(qiáng)大的客戶端執(zhí)行支持,最新的版本為3.0RC3。
    下面通過一個(gè)例子簡要展示HttpClient的使用方法:
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;

    iimport java.io.UnsupportedEncodingException;

    import java.util.*;

    import org.apache.commons.httpclient.Header;
    import org.apache.commons.httpclient.HostConfiguration;
    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.HttpConnection;
    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;


    /**
    @author steven
    */
    public class HttpClientExample {

    //獲得ConnectionManager,設(shè)置相關(guān)參數(shù)
    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;

    //標(biāo)志初始化是否完成的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方法獲取網(wǎng)頁內(nèi)容
    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);


    //在目標(biāo)頁面情況未知的條件下,不推薦使用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 (src != null) {
    try {

    return new String(src.getBytes(srcEncode), destEncode);
    catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return "";
    }

    else {
    return "";
    }
    }
    }
    之后,就可以通過下面的代碼獲得目標(biāo)網(wǎng)頁:
    String source = HttpClientExample.getGetResponseWithHttpClient("www.sina.com.cn", "GBK");

    注意,在默認(rèn)情況下,HttpClient的Request的Head中
    JAVA手機(jī)網(wǎng)[www.cnjm.net]
    User-Agent的值是Jakarta Commons-HttpClient 3.0RC1,如果需要改變它(例如,變?yōu)镸ozilla/4.0),必須在調(diào)用之前運(yùn)行如下語句:
    System.getProperties().setProperty("httpclient.useragent", "Mozilla/4.0");
    來自:http://www.cnjm.net/tech/article1153.html
    posted on 2009-06-23 17:56 SIMONE 閱讀(1222) 評(píng)論(0)  編輯  收藏 所屬分類: JAVA
    主站蜘蛛池模板: 国产精品亚洲片在线va| 亚洲av永久无码天堂网| 曰曰鲁夜夜免费播放视频| 精品亚洲AV无码一区二区三区 | 久久综合亚洲色一区二区三区| 日本黄网站动漫视频免费| 老司机亚洲精品影院在线观看| 国产成人99久久亚洲综合精品 | 大地资源网高清在线观看免费| 亚洲成a人片在线网站| 免费国产在线观看老王影院| 免费无码作爱视频| 亚洲人成电影网站色| 亚洲欧洲美洲无码精品VA| 无码免费午夜福利片在线| 中文字幕免费视频精品一| 亚洲人成在久久综合网站| 国产亚洲精久久久久久无码AV| 在线观看免费人成视频色9 | 波多野结衣一区二区免费视频| 114级毛片免费观看| 未满十八私人高清免费影院| a级毛片毛片免费观看久潮| 国产精品亚洲自在线播放页码| 亚洲精品自产拍在线观看| 日本高清免费网站| 日本片免费观看一区二区| 91视频精品全国免费观看| 亚洲国产精品18久久久久久 | a级毛片免费观看视频| 亚洲国产aⅴ成人精品无吗| 在线电影你懂的亚洲| 国产福利电影一区二区三区,亚洲国模精品一区 | 国产一区二区三区免费看| 久久国产免费福利永久| 最近更新免费中文字幕大全| 曰批免费视频播放免费| 亚洲国产精品无码久久98| 亚洲日韩中文字幕天堂不卡| 精品国产_亚洲人成在线高清 | 国内精品久久久久影院亚洲|