HttpClient4.X的代理添加实现

简介: HttpClient4.X的代理添加实现http://www.bieryun.com/1630.html [java] 查看纯文本 package  org.yla.test; import  java.

HttpClient4.X的代理添加实现

[java] 查看纯文本

  1. package  org.yla.test;
  2. import  java.net.URI;
  3. import  java.util.ArrayList;
  4. import  java.util.List;
  5. import  org.apache.commons.httpclient.HttpClient;
  6. import  org.apache.commons.httpclient.methods.GetMethod;
  7. import  org.apache.http.Header;
  8. 导入 org.apache.http.HttpEntity;
  9. import  org.apache.http.HttpHost;
  10. 导入 org.apache.http.auth.AuthScope;
  11. import  org.apache.http.auth.Credentials;
  12. import  org.apache.http.auth.UsernamePasswordCredentials;
  13. 导入 org.apache.http.client.CredentialsProvider;
  14. import  org.apache.http.client.entity.UrlEncodedFormEntity;
  15. import  org.apache.http.client.methods.CloseableHttpResponse;
  16. import  org.apache.http.client.methods.HttpGet;
  17. import  org.apache.http.client.methods.HttpPost;
  18. import  org.apache.http.impl.client.BasicCredentialsProvider;
  19. import  org.apache.http.impl.client.CloseableHttpClient;
  20. import  org.apache.http.impl.client.HttpClientBuilder;
  21. import  org.apache.http.impl.client.HttpClients;
  22. import  org.apache.http.message.BasicNameValuePair;
  23. import  org.apache.http.util.EntityUtils;
  24. import  org.junit.Test;
  25. 公共 HttpClientTest {
  26.     String url =  “xxxxxxxxxxxxxxxxxxxxxxxxx” ;
  27.     String ip =  “202.107.233.85” ;
  28.     int  port =  8080 ;
  29.     字符串用户名=  “” ;
  30.     String password =  “” ;
  31.     / **
  32.      *使用HttpClient4实现代理202.107.233.85 8080
  33.      * 
  34.      * @异常
  35.      * /
  36.     @测试
  37.     公共无效 test1()  抛出 异常{
  38.         HttpClientBuilder build = HttpClients.custom();
  39.         HttpHost proxy =  new  HttpHost(ip,port);
  40.         CloseableHttpClient client = build.setProxy(proxy).build();
  41.         HttpGet request =  new  HttpGet(url);
  42.         CloseableHttpResponse response = client.execute(request);
  43.         HttpEntity entity = response.getEntity();
  44.         的System.out.println(EntityUtils.toString(实体));
  45.     }
  46.     / **
  47.      *使用httpclient3实现代理
  48.      * 
  49.      * @异常
  50.      * /
  51.     @测试
  52.     公共无效 test2()  抛出 异常{
  53.         HttpClient httpClient =  new  HttpClient();
  54.         httpClient.getHostConfiguration()。setProxy(ip,port);
  55.         GetMethod方法=  new  GetMethod(url);
  56.         httpClient.executeMethod(方法);
  57.         String result =  new  String(method.getResponseBody());
  58.         的System.out.println(结果);
  59.     }
  60.     / **
  61.      *使用httpclient4实现代理(带密码的代理)
  62.      * 
  63.      * @异常
  64.      * /
  65.     @测试
  66.     公共无效 test3()  抛出 异常{
  67.         HttpClientBuilder build = HttpClients.custom();
  68.         CredentialsProvider credentialsProvider =  new  BasicCredentialsProvider();
  69.         AuthScope authscope =  new  AuthScope(ip,port);
  70.         凭证凭证=  新的 UsernamePasswordCredentials(用户名,
  71.                 密码);
  72.         credentialsProvider.setCredentials(authscope,credentials);
  73.         CloseableHttpClient client = build.setDefaultCredentialsProvider(
  74.                 credentialsProvider).build();
  75.         HttpGet request =  new  HttpGet(url);
  76.         CloseableHttpResponse response = client.execute(request);
  77.         HttpEntity entity = response.getEntity();
  78.         的System.out.println(EntityUtils.toString(实体));
  79.     }
  80.     / **
  81.      *使用httpclient3实现代理(带密码的代理)
  82.      * 
  83.      * @异常
  84.      * /
  85.     @测试
  86.     公共无效 test4()  抛出 异常{
  87.         HttpClient httpClient =  new  HttpClient();
  88.         org.apache.commons.httpclient.auth.AuthScope authscope =  new  org.apache.commons.httpclient.auth.AuthScope(
  89.                 ip,port);
  90.         org.apache.commons.httpclient.Credentials credentials =  new org.apache.commons.httpclient.UsernamePasswordCredentials(
  91.                 用户名密码);
  92.         httpClient.getState()。setProxyCredentials(authscope,credentials);
  93.         GetMethod方法=  new  GetMethod(url);
  94.         httpClient.executeMethod(方法);
  95.         String result =  new  String(method.getResponseBody());
  96.         的System.out.println(结果);
  97.     }
  98.     / **
  99.      *模拟登录官网(http://mis.pyc.com.cn?
  100.      * 
  101.      * @异常
  102.      * /
  103.     @测试
  104.     公共无效 testLogin()  抛出 异常{
  105.         HttpClientBuilder build = HttpClients.custom();
  106.         CloseableHttpClient client = build.build();
  107.         HttpPost post =  new  HttpPost(“http://mis.pyc.com.cn/login.aspx” );
  108.         List <BasicNameValuePair> params =  new  ArrayList <BasicNameValuePair>();
  109.         params.add(new  BasicNameValuePair(__VIEWSTATE
  110.                 “/ wEPDwUJNjUwNzE0MTM4ZGQzh + vF2xGjdG8Q15kIqgR0CpxhmPucdCqZOPcglRZr / w ==” ));
  111.         params.add(new  BasicNameValuePair(
  112.                 “__EVENTVALIDATION”
  113.                 “/ wEWBQLYtKSdCALEhISFCwKd + 7qdDgKC3IeGDAK7q7GGCOqhJpRD8S8yy3ZAlPTSsmPzRUoXMK0mQvGgzlk6hm + G” ));
  114.         params.add(new  BasicNameValuePair(“txtName” ,  “xxxxx” ));
  115.         params.add(new  BasicNameValuePair(“txtPwd” ,  “xxxxxx” ));
  116.         params.add(new  BasicNameValuePair(“btnLogin” ,  “xxxx” ));
  117.         HttpEntity entity =  new  UrlEncodedFormEntity(params,  “UTF-8” );
  118.         post.setEntity(实体);
  119.         CloseableHttpResponse response = client.execute(post);
  120.         int  statusCode = response.getStatusLine()。getStatusCode();
  121.         System.err.println(“状态”  + statusCode);
  122.         if  (statusCode ==  302 ){
  123.             Header [] location = response.getHeaders(“location” );
  124.             String rediretUrl =  null ;
  125.             if  (location.length ==  1 ){
  126.                 rediretUrl =  “http://mis.pyc.com.cn”  + location [ 0 ] .getValue();
  127.                 System.err.println(“跳转地址:”  + rediretUrl);
  128.             }
  129.             Header [] allHeaders = response.getAllHeaders();
  130.             System.out.println(“================== response ===================” );
  131.             for  (Header header:allHeaders){
  132.                 System.err.println(header.getName()+  “:”  + header.getValue());
  133.             }
  134.             标头cookieHeader = response.getFirstHeader(“Set-Cookie” );
  135.             String cookie = cookieHeader.getValue();
  136.             System.out.println(“cookie:”  + cookie);
  137.             HttpGet httpGet =  new  HttpGet(rediretUrl);
  138.             httpGet.addHeader(“Accept”
  139.                     “text / html,application / xhtml + xml,application / xml; q = 0.9,image / webp,* / *; q = 0.8” );
  140.             // httpGet.addHeader(“Accept-Encoding”,“gzip,deflate,sdch”);
  141.             // httpGet.addHeader(“Accept-Language”,“zh-CN,zh; q = 0.8”);
  142.             httpGet.addHeader(“Connection” ,  “keep-alive” );
  143.             httpGet.addHeader(“Cookie” ,cookie);
  144.             httpGet.addHeader(“Host” ,  “mis.pyc.com.cn” );
  145.             httpGet.addHeader(“Referer” ,  “http://mis.pyc.com.cn/login.aspx” );
  146.             httpGet.addHeader(
  147.                     “用户代理”
  148.                     “ozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 40.0.2214.115 Safari / 537.36” );
  149.             response = client.execute(httpGet);
  150.             HttpEntity entity2 = response.getEntity();
  151.             System.out的
  152.                     .println(“---------------------------------------------- “ );
  153.             的System.out.println(EntityUtils.toString(ENTITY2));
  154.         }
  155.     }
  156. }
相关文章
|
大数据 Python
Python中for循环的嵌套应用
Python中for循环的嵌套应用
355 1
|
10月前
|
人工智能 Ubuntu Linux
我的工具库-2025
从2008年编写第一行代码起,我经历了多阶段的知识管理探索。初期使用草稿本和待办事项,后转为离线笔记软件、个人博客与印象笔记,最终在2023年选定Obsidian作为核心工具,结合卡片式笔记法和双链笔记,实现高效的知识收集、加工与分享。我的日常工具涵盖开发环境(如JetBrains系列)、操作系统(Ubuntu)、NAS系统(TrueNAS Scale)及各类辅助应用,形成了一个高度定制化的“外部大脑”。这一套工具不仅支持了我的工作和学习,也让我深刻体会到AI时代的便利与无限可能。
我的工具库-2025
|
12月前
|
人工智能 自然语言处理 安全
魔搭社区每周速递(12.08-12.14)
魔搭ModelScope本期社区进展:新增1599个模型,46个数据集,67个创新应用,8篇内容
416 7
魔搭社区每周速递(12.08-12.14)
|
消息中间件 监控 Ubuntu
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
402 3
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
|
12月前
|
Ubuntu Linux 数据安全/隐私保护
Ubuntu20.04下修改samba用户密码
在 Ubuntu 20.04 上,修改 Samba 用户密码是一个简单而常见的管理任务。通过正确安装和配置 Samba,并使用 `smbpasswd` 命令,可以方便地管理 Samba 用户及其密码。本文提供了详细的步骤和示例,帮助您顺利完成这些操作。希望这些信息对您有所帮助。
835 16
|
存储 边缘计算 安全
边缘计算设备的设计与部署技术探索
【8月更文挑战第1天】边缘计算设备的设计与部署是一个复杂而系统的工程,需要综合考虑多个方面的因素。通过制定全面的战略规划、选择合适的技术和设备、设计合理的网络架构、实施有效的安全策略以及定期管理维护等措施,可以确保边缘计算设备的稳定运行和高效应用。随着物联网和云计算技术的不断发展,边缘计算将在更多领域展现出其独特的优势和潜力。
449 10
|
前端开发 JavaScript 数据格式
vue3中axios添加请求和响应的拦截器
vue3中axios添加请求和响应的拦截器
510 1
|
存储 供应链 安全
解释区块链技术的应用场景、优势及经典案例
解释区块链技术的应用场景、优势及经典案例
2019 0