接口測試(二)httpClient 獲取網頁內容以及頭信息

想用java做http的接口自動化,首先使用了java.net下的http方法,BUG 網上好多人說httpClient比較牛,好處一堆,那我就選了httpClient大笑

目前最簡單的就是使用get或者post發送簡單的請求獲取連接的狀態碼 獲取網頁信息

代碼如下:

package service.fyy.unit;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

import sun.misc.IOUtils;

public class HttpClientTest {

	public static void main(String[] args) throws Exception {
		HttpClientTest test = new HttpClientTest();
		test.sentGet("/");
	}

	public void sentGet(String url) throws Exception {
		CloseableHttpClient httpclient = HttpClients.createDefault();
		String result = "";
		try {
			HttpHost targetHost = new HttpHost("www.baidu.cn");
			// 創建get連接
			HttpGet httpget = new HttpGet(url);
			// 設置超時時間
			RequestConfig requestConfig = RequestConfig.custom()
					.setSocketTimeout(2000).setConnectTimeout(1000 * 10)
					.build();// 設置請求和傳輸超時時間
			httpget.setConfig(requestConfig);
			httpget.setHeader("Accept-Charset",
					"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.2");
			// 發送請求
			CloseableHttpResponse response = httpclient.execute(targetHost,
					httpget);
			System.out.println("URI:" + httpget.getURI());
			// 獲取狀態碼
			System.out.println("狀態碼:"
					+ response.getStatusLine().getStatusCode());
			System.out.println("頭部信息:"
					+ httpget.getFirstHeader("Accept-Charset").getValue());

			// BufferedReader reader= new BufferedReader(new
			// InputStreamReader(response.get));

			// 獲取所有的請求頭信息
			Header headers[] = response.getAllHeaders();
			int ii = 0;
			while (ii < headers.length) {
				System.out.println(headers[ii].getName() + ":"
						+ headers[ii].getValue());
				++ii;
			}
			// 抓取網頁內容
			HttpEntity entity = response.getEntity();
			BufferedReader br = new BufferedReader(new InputStreamReader(
					entity.getContent(), "UTF-8"));
			String line;
			while ((line = br.readLine()) != null) {
				result += line;
			}

			br.close();
			System.out.println("result:" + result);

			// 終止請求
			httpget.abort();
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			// 終止請求
			httpclient.close();
		}
<span style="white-space:pre">		</span>//獲取URI
		// System.out.println("getURI:" + httpget.getURI());
<span style="white-space:pre">		</span>//設置HTTPversion
		// httpget.setProtocolVersion( new ProtocolVersion("HTTP", 1, 0));
<span style="white-space:pre">			</span>//得到HTTP version
		// System.out
		// .println("getProtocolVersion:" + httpget.getProtocolVersion());
		<span style="white-space:pre">	</span>//設置URI
		// httpget.setURI(new URI(url));

	}

}

沒有整理格式,都是試驗的各種實現方法,還得再接再厲啊


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章