[转]HttpClient4基础1--通过匿名代理访问网页
HttpClient发布4.0了 而且底层完全重写了,据说无论是效率还是结构都有质的飞跃。?
现在也要与时具进,研究研究。
?
[c-sharp]?view plaincopy- package?test.httpclient4.proxy;?????
- ????
- import?java.io.BufferedReader;?????
- import?java.io.IOException;?????
- import?java.io.InputStreamReader;?????
- ????
- import?org.apache.http.HttpEntity;?????
- import?org.apache.http.HttpHost;?????
- import?org.apache.http.HttpResponse;?????
- import?org.apache.http.HttpStatus;?????
- import?org.apache.http.StatusLine;?????
- import?org.apache.http.client.ClientProtocolException;?????
- import?org.apache.http.client.HttpClient;?????
- import?org.apache.http.client.methods.HttpGet;?????
- import?org.apache.http.conn.params.ConnRoutePNames;?????
- import?org.apache.http.impl.client.DefaultHttpClient;?????
- import?org.apache.http.message.BasicStatusLine;?????
- import?org.apache.http.util.EntityUtils;?????
- ????
- ????
- public?class?GetHttpByProxy?{?????
- ????
- ????public?static?void?main(String[]?args)?throws?ClientProtocolException,?????
- ????????????IOException?{?????
- ????????//实例化一个HttpClient?????
- ????????HttpClient?httpClient?=?new?DefaultHttpClient();?????
- ????????//设定目标站点?????
- ????????HttpHost?httpHost?=?new?HttpHost("www.shanhe114.com");?????
- ????????//设置代理对象?ip/代理名称,端口?????
- ????????HttpHost?proxy?=?new?HttpHost("192.168.1.28",?5608);?????
- ????????//对HttpClient对象设置代理?????
- ????????httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,?????
- ????????????????proxy);?????
- ????????HttpGet?httpGet?=?new?HttpGet("/");?????
- ????????//这里也可以直接使用httpGet的绝对地址,当然如果不是具体地址不要忘记/结尾?????
- ????????//HttpGet?httpGet?=?new?HttpGet("http://www.shanhe114.com/");?????
- ????????//HttpResponse?response?=?httpClient.execute(httpGet);?????
- ?????????????
- ????????HttpResponse?response?=?httpClient.execute(httpHost,?httpGet);?????
- ????????if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){?????
- ????????????//请求成功?????
- ????????????//取得请求内容?????
- ????????????HttpEntity?entity?=?response.getEntity();?????
- ????????????//显示内容?????
- ????????????if?(entity?!=?null)?{?????
- ????????????????//?显示结果?????
- ????????????????BufferedReader?reader?=?new?BufferedReader(new?InputStreamReader(entity?????
- ????????????????????????.getContent(),?"UTF-8"));?????
- ????????????????String?line?=?null;?????
- ????????????????StringBuffer?strBuf?=?new?StringBuffer((int)?entity.getContentLength());?????
- ????????????????while?((line?=?reader.readLine())?!=?null)?{?????
- ????????????????????strBuf.append(line);?????
- ????????????????}?????
- ????????????????strBuf.trimToSize();?????
- ????????????????System.out.println(strBuf.toString());?????
- ????????????}?????
- ????????????if?(entity?!=?null)?{?????
- ????????????????entity.consumeContent();?????
- ????????????}?????
- ????????}?????
- ????}?????
- }????
?
?
对于显示将结果转换成String以备后续使用,HttpClient已经为我们提供了一个简便方法?
如下
?
[java]?view plaincopy- System.out.println(EntityUtils.toString(entity,"utf-8")); ? ?