HttpClient4.X的代理添加实现
<b>[java] </b>查看纯文本
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() 抛出 异常{
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
AuthScope authscope = new AuthScope(ip,port);
凭证凭证= 新的 UsernamePasswordCredentials(用户名,
密码);
credentialsProvider.setCredentials(authscope,credentials);
CloseableHttpClient client = build.setDefaultCredentialsProvider(
credentialsProvider).build();
*使用httpclient3实现代理(带密码的代理)
公共无效 test4() 抛出 异常{
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);
*模拟登录官网(http://mis.pyc.com.cn?
公共无效 testLogin() 抛出 异常{
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));
}
}