接口测试(二)httpClient 获取网页内容以及头信息

来源:互联网 发布:mac找不到启动磁盘 编辑:程序博客网 时间:2024/05/22 13:31

想用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));}}

没有整理格式,都是试验的各种实现方法,还得再接再厉啊


0 0
原创粉丝点击