专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » httpclient.error:利用HttpClient获取网页内容 »正文

httpclient.error:利用HttpClient获取网页内容

来源: 发布时间:星期四, 2009年2月5日 浏览:14次 评论:0
  代码如下:

importjava.io.BufferedReader;  
importjava.io.InputStreamReader;  
importjava.io.UnsupportedEncodingException;  
importorg.apache.commons.httpclient.HttpClient;  
importorg.apache.commons.httpclient.MultiThreadedHttpConnectionManager;  
importorg.apache.commons.httpclient.NameValuePair;  
importorg.apache.commons.httpclient.methods.GetMethod;  
importorg.apache.commons.httpclient.methods.PostMethod;  
publicHttpClientExample{  
  //获得ConnectionManager设置相关参数  
  privateMultiThreadedHttpConnectionManagermanager=MultiThreadedHttpConnectionManager;  
  privateconnectionTimeOut=20000;  
  privateTimeOut=10000;  
  privatemaxConnectionPerHost=5;  
  privatemaxTotalConnections=40;  
  //标志化是否完成flag  
  privatebooleaninitialed=false;  
  //化ConnectionManger思路方法  
  publicvoidSetPara{  
    manager.getParams.ConnectionTimeout(connectionTimeOut);  
    manager.getParams.SoTimeout(TimeOut);  
    manager.getParams.DefaultMaxConnectionsPerHost(  
        maxConnectionPerHost);  
    manager.getParams.MaxTotalConnections(maxTotalConnections);  
    initialed=true;  
  }  
  //通过get思路方法获取网页内容  
  publicStringgetGetResponseWithHttpClient(Stringurl,Stringencode){  
    HttpClientclient=HttpClient(manager);  
    (initialed){  
      HttpClientExample.SetPara;  
    }  
    GetMethodget=GetMethod(url);  
    get.FollowRedirects(true);  
    Stringresult=null;  
    StringBufferresultBuffer=StringBuffer;  
    try{  
      client.executeMethod(get);  
      //在目标页面情况未知条件下不推荐使用getResponseBodyAsString思路方法  
      //StringstrGetResponseBody=post.getResponseBodyAsString;  
      BufferedReaderin=BufferedReader(InputStreamReader(get  
          .getResponseBodyAsStream,get.getResponseCharSet));  
      StringinputLine=null;  
      while((inputLine=in.readLine)!=null){  
        resultBuffer.append(inputLine);  
        resultBuffer.append("n");  
      }  
      in.close;  
      result=resultBuffer.toString;  
      //iso-8859-1isthedefaultreadingencode  
      result=HttpClientExample.ConverterStringCode(resultBuffer  
          .toString,get.getResponseCharSet,encode);  
    }catch(Exceptione){  
      e.prStackTrace;  
      result="";  
    }finally{  
        
      get.releaseConnection;  
      result;  
    }  
  }  
  publicStringgetPostResponseWithHttpClient(Stringurl,Stringencode){  
    HttpClientclient=HttpClient(manager);  
    (initialed){  
      HttpClientExample.SetPara;  
    }  
    PostMethodpost=PostMethod(url);  
    post.FollowRedirects(false);  
    StringBufferresultBuffer=StringBuffer;  
    Stringresult=null;  
    try{  
      client.executeMethod(post);  
      BufferedReaderin=BufferedReader(InputStreamReader(post  
          .getResponseBodyAsStream,post.getResponseCharSet));  
      StringinputLine=null;  
      while((inputLine=in.readLine)!=null){  
        resultBuffer.append(inputLine);  
        resultBuffer.append("n");  
      }  
      in.close;  
      //iso-8859-1isthedefaultreadingencode  
      result=HttpClientExample.ConverterStringCode(resultBuffer  
          .toString,post.getResponseCharSet,encode);  
    }catch(Exceptione){  
      e.prStackTrace;  
      result="";  
    }finally{  
        
      post.releaseConnection;  
      result;  
    }  
  }  
  publicStringgetPostResponseWithHttpClient(Stringurl,  
      Stringencode,NameValuePairnameValuePair){  
    HttpClientclient=HttpClient(manager);  
    (initialed){  
      HttpClientExample.SetPara;  
    }  
    PostMethodpost=PostMethod(url);  
    post.RequestBody(nameValuePair);  
    post.FollowRedirects(false);  
    Stringresult=null;  
    StringBufferresultBuffer=StringBuffer;  
    try{  
      client.executeMethod(post);  
      BufferedReaderin=BufferedReader(InputStreamReader(post  
          .getResponseBodyAsStream,post.getResponseCharSet));  
      StringinputLine=null;  
      while((inputLine=in.readLine)!=null){  
        resultBuffer.append(inputLine);  
        resultBuffer.append("n");  
      }  
      in.close;  
      //iso-8859-1isthedefaultreadingencode  
      result=HttpClientExample.ConverterStringCode(resultBuffer  
          .toString,post.getResponseCharSet,encode);  
    }catch(Exceptione){  
      e.prStackTrace;  
      result="";  
    }finally{  
      post.releaseConnection;  
      result;  
    }  
  }  
  privateStringConverterStringCode(Stringsource,StringsrcEncode,  
      StringdestEncode){  
    (source!=null){  
      try{  
        String(source.getBytes(srcEncode),destEncode);  
      }catch(UnsupportedEncodingExceptione){  
        //TODOAuto-generatedcatchblock  
        e.prStackTrace;  
        "";  
      }  
    }{  
      "";  
    }  
  }  
} 


  的后就可以通过下面代码获得目标网页:

  String source = HttpClientExample.getGetResponseWithHttpClient("http://www.163.com", "GBK");

  注意在默认情况下HttpClientRequestHead中

  User-Agent值是Jakarta Commons-HttpClient 3.0RC1如果需要改变它(例如变为Mozilla/4.0)必须在的前运行如下语句:

  .getProperties.Property("httpclient.useragent", "Mozilla/4.0");



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: