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

实现方式

/**
*
* @测试点: 发送get请求,并且设置cookies
* @验证点: TODO(这里用一句话描述这个方法的作用)
* @param @param
* url
* @param @param
* cookies @备注: void
* @author zhangjun
* @date 2017年11月7日
* @修改说明
*/
public String httpGet(String url, String cookies) { String result = null; HttpHost proxy = new HttpHost("127.0.0.1", 8888, "http"); //添加代理,IP为本地IP 8888就是fillder的端口
CloseableHttpClient httpClient = HttpClients.createDefault();//添加代理
try {
// 创建httpGet
HttpGet httpGet = new HttpGet(url);
System.out.println("获取的url为:"+url);
httpGet.setHeader("Connection", "keep-alive");
httpGet.addHeader(new BasicHeader("Cookie", cookies)); //代理
RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
httpGet.setConfig(config); System.out.println("executing request:" + httpGet.getURI());
// 执行get请求
CloseableHttpResponse response = httpClient.execute(httpGet);
try {
int code = response.getStatusLine().getStatusCode();
System.out.println("返回的状态码:" + code);
// 获取响应实体
HttpEntity entity = response.getEntity();
// 打印响应状态
System.out.println(response.getStatusLine());
if (entity != null) {
System.out.println("Response content length" + entity.getContentLength());
// 打印响应内容
result = EntityUtils.toString(entity);
// 打印响应头
System.out.println("Response content" + entity.getContent());
System.out.println("Response Contentype" + entity.getContentType());
System.out.println("Response ContenEncoding" + entity.getContentEncoding());
}
System.out.println("--------------");
Header[] hr = response.getAllHeaders();
for (int i = 0; i < hr.length; i++) {
Header header1 = hr[i];
System.out.println("头部内容:" + header1);
} } finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭连接,释放资源
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}

  

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. nginx与 Keepalived高可用

    1.1 keepalived软件能干什么? Keepalived软件起初是专为LVS负载均衡软件设计的, 用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能 K ...

  2. perf命令

    @(Linux基础)[perf命令] perf命令 ---- 简介 Perf是内置于Linux内核源码树中的性能剖析(profiling)工具,它基于事件采样原理,以性能事件为基础,支持针对处理器相关 ...

  3. 对四次挥手中的TIME_WAIT状态的学习

    TIME_WAIT状态不必多说    是属于四次挥手中的一种特殊状态 作用有两点简单明了  不废话 (1)可靠的实现TCP全双工连接的终止 (2)允许老的重复的.迟到的分节在网络中消逝        ...

  4. python 横向比较最大值 贴标签

    df['dfda']=pd.Series(df[['a','b','v']].idxmax(axis=1),index=df.index)#横向比较最大值并返回列名,比循环快N倍

  5. derby

    /** * @Title: T.java * @Package test * @Description: TODO please write your description <BR> * ...

  6. 摄像机模型 (Camera Model)

    摄像机通过成像透镜将三维场景投影到摄像机二维像平面上,这个投影可用成像变换描述,即摄像机成像模型.摄像机成像模型有不同描述方式,本节首先介绍机器视觉中的常用坐标系,然后介绍摄像机的线性模型和非线性模型 ...

  7. vuex初探

    WW(是什么.为什么) 什么是vuex? 如果你学过react,那么你就更容易理解vuex,因为vuex相当于react中的redux,它是用于管理数据的工具.我们看一看官网的介绍: Vuex 是一个 ...

  8. My first Python program(附增加清屏方法)

    #TempConvert.py TempStr = input("请输入带有符号的温度值:") if TempStr[-1] in ['F', 'f']: C = (eval(Te ...

  9. 通过进入单用户模式解决linux中的rc.local修改后无法启动的问题

    问题:本想将teamviewer这个软件随linux自启动,所以将其启动命令放在rc.local中,但是重启后发现linux启动不起来了,系统前面都是正常启动的,就是无法进入帐户登陆界面,无法输入ro ...

  10. ETL模型设计

    传统的关系数据库一般采用二维数表的形式来表示数据,一个维是行,另一个维是列,行和列的交叉处就是数据元素.关系数据的基础是关系数据库模型,通过标准的SQL语言来加以实现. 数据仓库是多维数据库,它扩展了 ...