首页 »编程综合 » 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"); 注意 在默认情况下 HttpClient Request Head中 User-Agent 值是Jakarta Commons-HttpClient 3.0RC1 如果需要改变它(例如 变为Mozilla/4.0) 必须在 的前运行如下语句: .getProperties . Property("httpclient.useragent", "Mozilla/4.0");
相关文章
读者评论
发表评论
|
|