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;
	}

  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM