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/p/7808035.html