HttpClient4.X的代理添加实现
- package org.yla.test;
- import java.net.URI;
- import java.util.ArrayList;
- import java.util.List;
- import org.apache.commons.httpclient.HttpClient;
- import org.apache.commons.httpclient.methods.GetMethod;
- import org.apache.http.Header;
- 导入 org.apache.http.HttpEntity;
- import org.apache.http.HttpHost;
- 导入 org.apache.http.auth.AuthScope;
- import org.apache.http.auth.Credentials;
- import org.apache.http.auth.UsernamePasswordCredentials;
- 导入 org.apache.http.client.CredentialsProvider;
- import org.apache.http.client.entity.UrlEncodedFormEntity;
- import org.apache.http.client.methods.CloseableHttpResponse;
- import org.apache.http.client.methods.HttpGet;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.impl.client.BasicCredentialsProvider;
- import org.apache.http.impl.client.CloseableHttpClient;
- import org.apache.http.impl.client.HttpClientBuilder;
- import org.apache.http.impl.client.HttpClients;
- import org.apache.http.message.BasicNameValuePair;
- import org.apache.http.util.EntityUtils;
- import org.junit.Test;
- 公共类 HttpClientTest {
- String url = “xxxxxxxxxxxxxxxxxxxxxxxxx” ;
- String ip = “202.107.233.85” ;
- int port = 8080 ;
- 字符串用户名= “” ;
- String password = “” ;
- / **
- *使用HttpClient4实现代理202.107.233.85 8080
- *
- * @异常
- * /
- @测试
- 公共无效 test1() 抛出 异常{
- HttpClientBuilder build = HttpClients.custom();
- HttpHost proxy = new HttpHost(ip,port);
- CloseableHttpClient client = build.setProxy(proxy).build();
- HttpGet request = new HttpGet(url);
- CloseableHttpResponse response = client.execute(request);
- HttpEntity entity = response.getEntity();
- 的System.out.println(EntityUtils.toString(实体));
- }
- / **
- *使用httpclient3实现代理
- *
- * @异常
- * /
- @测试
- 公共无效 test2() 抛出 异常{
- HttpClient httpClient = new HttpClient();
- httpClient.getHostConfiguration()。setProxy(ip,port);
- GetMethod方法= new GetMethod(url);
- httpClient.executeMethod(方法);
- String result = new String(method.getResponseBody());
- 的System.out.println(结果);
- }
- / **
- *使用httpclient4实现代理(带密码的代理)
- *
- * @异常
- * /
- @测试
- 公共无效 test3() 抛出 异常{
- HttpClientBuilder build = HttpClients.custom();
- CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
- AuthScope authscope = new AuthScope(ip,port);
- 凭证凭证= 新的 UsernamePasswordCredentials(用户名,
- 密码);
- credentialsProvider.setCredentials(authscope,credentials);
- CloseableHttpClient client = build.setDefaultCredentialsProvider(
- credentialsProvider).build();
- HttpGet request = new HttpGet(url);
- CloseableHttpResponse response = client.execute(request);
- HttpEntity entity = response.getEntity();
- 的System.out.println(EntityUtils.toString(实体));
- }
- / **
- *使用httpclient3实现代理(带密码的代理)
- *
- * @异常
- * /
- @测试
- 公共无效 test4() 抛出 异常{
- HttpClient httpClient = new HttpClient();
- org.apache.commons.httpclient.auth.AuthScope authscope = new org.apache.commons.httpclient.auth.AuthScope(
- ip,port);
- org.apache.commons.httpclient.Credentials credentials = new org.apache.commons.httpclient.UsernamePasswordCredentials(
- 用户名密码);
- httpClient.getState()。setProxyCredentials(authscope,credentials);
- GetMethod方法= new GetMethod(url);
- httpClient.executeMethod(方法);
- String result = new String(method.getResponseBody());
- 的System.out.println(结果);
- }
- / **
- *模拟登录官网(http://mis.pyc.com.cn?
- *
- * @异常
- * /
- @测试
- 公共无效 testLogin() 抛出 异常{
- HttpClientBuilder build = HttpClients.custom();
- CloseableHttpClient client = build.build();
- HttpPost post = new HttpPost(“http://mis.pyc.com.cn/login.aspx” );
- List <BasicNameValuePair> params = new ArrayList <BasicNameValuePair>();
- params.add(new BasicNameValuePair(“ __VIEWSTATE ” ,
- “/ wEPDwUJNjUwNzE0MTM4ZGQzh + vF2xGjdG8Q15kIqgR0CpxhmPucdCqZOPcglRZr / w ==” ));
- params.add(new BasicNameValuePair(
- “__EVENTVALIDATION” ,
- “/ wEWBQLYtKSdCALEhISFCwKd + 7qdDgKC3IeGDAK7q7GGCOqhJpRD8S8yy3ZAlPTSsmPzRUoXMK0mQvGgzlk6hm + G” ));
- params.add(new BasicNameValuePair(“txtName” , “xxxxx” ));
- params.add(new BasicNameValuePair(“txtPwd” , “xxxxxx” ));
- params.add(new BasicNameValuePair(“btnLogin” , “xxxx” ));
- HttpEntity entity = new UrlEncodedFormEntity(params, “UTF-8” );
- post.setEntity(实体);
- CloseableHttpResponse response = client.execute(post);
- int statusCode = response.getStatusLine()。getStatusCode();
- System.err.println(“状态” + statusCode);
- if (statusCode == 302 ){
- Header [] location = response.getHeaders(“location” );
- String rediretUrl = null ;
- if (location.length == 1 ){
- rediretUrl = “http://mis.pyc.com.cn” + location [ 0 ] .getValue();
- System.err.println(“跳转地址:” + rediretUrl);
- }
- Header [] allHeaders = response.getAllHeaders();
- System.out.println(“================== response ===================” );
- for (Header header:allHeaders){
- System.err.println(header.getName()+ “:” + header.getValue());
- }
- 标头cookieHeader = response.getFirstHeader(“Set-Cookie” );
- String cookie = cookieHeader.getValue();
- System.out.println(“cookie:” + cookie);
- HttpGet httpGet = new HttpGet(rediretUrl);
- httpGet.addHeader(“Accept” ,
- “text / html,application / xhtml + xml,application / xml; q = 0.9,image / webp,* / *; q = 0.8” );
- // httpGet.addHeader(“Accept-Encoding”,“gzip,deflate,sdch”);
- // httpGet.addHeader(“Accept-Language”,“zh-CN,zh; q = 0.8”);
- httpGet.addHeader(“Connection” , “keep-alive” );
- httpGet.addHeader(“Cookie” ,cookie);
- httpGet.addHeader(“Host” , “mis.pyc.com.cn” );
- httpGet.addHeader(“Referer” , “http://mis.pyc.com.cn/login.aspx” );
- httpGet.addHeader(
- “用户代理” ,
- “ozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 40.0.2214.115 Safari / 537.36” );
- response = client.execute(httpGet);
- HttpEntity entity2 = response.getEntity();
- System.out的
- .println(“---------------------------------------------- “ );
- 的System.out.println(EntityUtils.toString(ENTITY2));
- }
- }
- }