背景:在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;
}


