httpclient开启代理,获取java中请求的url
背景:在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; }
作者:做梦的人(小姐姐) 出处:https://www.cnblogs.com/chongyou/ 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。 如果文中有什么错误,欢迎指出。以免更多的人被误导。 微信号:18582559217 |