天天看点

HttpClient4.X的代理添加实现

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 &lt;BasicNameValuePair&gt; params =  new  ArrayList &lt;BasicNameValuePair&gt;();

        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));

        }

}