背景:在httpclent做post或者get请求时,请求返回的数据总是和预想的不一致,但是有不知道怎么排查问题,经同事说httpclient可以设置代理,就可以获取请求前数据的一些问题,帮助我排查问题,使用代理很方便,就3句话

实现方式

  1. /**
  2. *
  3. * @测试点: 发送get请求,并且设置cookies
  4. * @验证点: TODO(这里用一句话描述这个方法的作用)
  5. * @param @param
  6. * url
  7. * @param @param
  8. * cookies @备注: void
  9. * @author zhangjun
  10. * @date 2017年11月7日
  11. * @修改说明
  12. */
  13. public String httpGet(String url, String cookies) {
  14.  
  15. String result = null;
  16.  
  17. HttpHost proxy = new HttpHost("127.0.0.1", 8888, "http"); //添加代理,IP为本地IP 8888就是fillder的端口
  18. CloseableHttpClient httpClient = HttpClients.createDefault();//添加代理
  19. try {
  20. // 创建httpGet
  21. HttpGet httpGet = new HttpGet(url);
  22. System.out.println("获取的url为:"+url);
  23. httpGet.setHeader("Connection", "keep-alive");
  24. httpGet.addHeader(new BasicHeader("Cookie", cookies));
  25.  
  26. //代理
  27. RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
  28. httpGet.setConfig(config);
  29.  
  30. System.out.println("executing request:" + httpGet.getURI());
  31. // 执行get请求
  32. CloseableHttpResponse response = httpClient.execute(httpGet);
  33. try {
  34. int code = response.getStatusLine().getStatusCode();
  35. System.out.println("返回的状态码:" + code);
  36. // 获取响应实体
  37. HttpEntity entity = response.getEntity();
  38. // 打印响应状态
  39. System.out.println(response.getStatusLine());
  40. if (entity != null) {
  41. System.out.println("Response content length" + entity.getContentLength());
  42. // 打印响应内容
  43. result = EntityUtils.toString(entity);
  44. // 打印响应头
  45. System.out.println("Response content" + entity.getContent());
  46. System.out.println("Response Contentype" + entity.getContentType());
  47. System.out.println("Response ContenEncoding" + entity.getContentEncoding());
  48. }
  49. System.out.println("--------------");
  50. Header[] hr = response.getAllHeaders();
  51. for (int i = 0; i < hr.length; i++) {
  52. Header header1 = hr[i];
  53. System.out.println("头部内容:" + header1);
  54. }
  55.  
  56. } finally {
  57. response.close();
  58. }
  59. } catch (ClientProtocolException e) {
  60. e.printStackTrace();
  61. } catch (Exception e) {
  62. e.printStackTrace();
  63. } finally {
  64. // 关闭连接,释放资源
  65. try {
  66. httpClient.close();
  67. } catch (IOException e) {
  68. e.printStackTrace();
  69. }
  70. }
  71. return result;
  72. }

  

httpclient开启代理,获取java中请求的url的更多相关文章

  1. Django自动获取项目中的全部URL

    import re from collections import OrderedDict from django.conf import settings from django.utils.mod ...

  2. 获取HTML中所有图片的 URL

    /// <summary> /// 获取HTML中所有图片的 URL /// </summary> /// <param name="strHtml" ...

  3. Nginx应用-Location路由反向代理及重写策略 请求转发-URL匹配规则 NGINX Reverse Proxy

    NGINX Docs | NGINX Reverse Proxy https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/ ...

  4. 记录-java执行请求的URL

    package wzh.Http; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr ...

  5. Java中常用的url签名防篡改方法

    实现方式:Md5(url+key) 的方式进行的. 1.key可以是任意的字符串,然后“客户端”和“服务器端”各自保留一份,千万不能外泄. 2.请求的URL 例如:  name=lxl&age ...

  6. Java中常见的URL问题及解决方案

    URL无处不在,不过似乎开发人员并没有真正地理解它们,因为在Stack Overflow上经常看到有人在问如何正确的创建一个URL.想知道URL语法是如何工作的,可以看下兄弟连教育总结的这篇文章,非常 ...

  7. 【PHP5.3+】获取getCurrentUrl()中 的地址url

    1.在控制器中调用其他 扩展或者类 的方法时候,getCurrentUrl()方法 是获取的[当前控制器下方法]的路由,不是[其他 扩展或者类 方法]的路由!!! 2.getCurrentUrl()方 ...

  8. JS获取地址栏中的链接URL参数

    function getUrlParam(name){ var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&am ...

  9. 获取SpringBoot中所有的url和其参数

    获取所有url和方法的对应关系 1 @Data 2 public class Param { 3 4 /** 5 * 字段名称 6 */ 7 private String name; 8 9 /** ...

随机推荐

  1. rsync常见故障

    1.1 rsync客户端执行rsync命令错误: 客户端的错误现象: [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41: ...

  2. UBoot添加命令的方法

    1. 具体实现步骤 ① 在./common文件夹下新建cmd_led.c,并在此文件中添加如下内容 #include <common.h> #include <command.h&g ...

  3. pl/sql declare loop if

    -- 1.判断表是否存在,如果存在则drop表 -- 2.创建表 -- 3.插入1W条数据 -- 4.每1K条commit一次 declare v_table ):='STUDENT'; --表名 v ...

  4. WindowsMTU修改

    MTU是英文Maximum Transmission Unit的缩写,意为"最大传输单位".也就是通过TCP/IP协议所传输的数据包最大有多少字节,对于网速有极大的影响, MTU并 ...

  5. Nmap工具使用

    Nmap是一款网络扫描和主机检测的非常有用的工具. Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器.它可以适用于winodws,linux,mac等操作系统.Nmap ...

  6. js网页瀑布流布局

    瀑布流布局思路: 1.css样式,图片的父级div样式设置为定位或者浮动 2.找出图片父级元素(box)和最外元素(main):获取box的宽度和main的宽,然后计算main容器一行能容纳多少个bo ...

  7. 关于C语言读取文件时候多读一行

    梗概:为什么C语言读取文件到结构体时为什么整天多读一行?一切都是[!feof(fp)]的错!!! while (!feof(fp)) { fgets(buffer, , fp); j++; } 像这样 ...

  8. Host 'XXX' is not allowed to connect to this MySQL server解决方案

    如何允许远程连接mysql数据库呢,操作如下: 首先登录账号 mysql -uroot -p 使用mysql用户 use mysql 如果报此类错:ERROR 1820 (HY000): You mu ...

  9. Ajax原理实现

    jQuery的ajax实现原理: // 1.创建一个XMLHttpRequest对象 var xhr = new XMLHttpRequest(); // 2.打开请求 xhr.open('METHO ...

  10. 二叉排序树思想及C语言实现

    转自: http://blog.chinaunix.net/uid-22663647-id-1771796.html 1.二叉排序树的定义 二叉排序树(Binary Sort Tree)又称二叉查找( ...