接口测试——httpclient介绍与请求方式详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试——httpclient介绍与请求方式详解相关的知识,希望对你有一定的参考价值。

httpClient工具介绍

HTTP协议可能是现在lntemet上使用得最多、最重要的协议了,越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源。虽然在JDK的java.net包中已经提供了访问http协议的基木功能,但是对于大部分应用程序来说,JDK库本身提供的功能还不够丰富和灵活。HttpClient是ApaChe、JakamComnmn下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP协议的客户端编程工具包,并且它支持HTTP办议最新的版术和建议。

httpClien工具的安装

所需要依赖的jar包是以下三个:

http-core-4.4.6.jar、commons-logging-1.2.jar、commons-codec-1.10.jar

方法一:到Apache官网下载工具包,然后导入到eclipse中即可,下载地址:http://hc.apache.org/downloads.cgi

方法二:前提条件是:eclipse要配置好Maven,在工程中的pom.xml文件中,写入代码,保存便自动下载jar包。搜索httpclient地址:http://www.mvnrepository.com/,操作如下所示:

①点击网址,进入首页,在搜索框中输入httpclient搜索

技术分享

②点击搜索出来的第一个Apache HttpClient

技术分享

③选择不同的版本,点击(本文以4.5.3版本为例)

技术分享

④将上图红色框中的代码复制到eclipse建的Maven工程中的pom.xml文件下,操作如下图所示:

技术分享

⑤保存pom.xml文件后,便会自动下载jar包,可在Maven工具包中查看到

httpClien工具的主要功能

1.实现了所有HTTP的方法(get、post、put、head等)

2.支持自动转向

3.支持代理服务器

4.自动处理set-cookie中的cookie

5.直接获取服务器发送的response code和headers

6.设置连接超时的能力

需要注意的是,httpclient版本的不同,功能实现的代码也就不同,需要谨慎。

httpclient使用流程

1. 创建HttpClient对象。

2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求, 创建HttpGet对象; 如果需要发送POST请求,创建HttpPost对象。

3. 如果需要发送请求参数, 可调用HttpGet、 HttpPost共同的setParams(HetpParams params)方法来添加请求参数; 对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。

4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求该方法返回一个HttpResponse。

5. 调用HttpResponse的getAllHeaders()、 getHeaders(String name)等方法可获取服务器的响应头; 调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。 程序可通过该对象获取服务器的响应内容。

6. 释放连接。 无论执行方法是否成功, 都必须释放连接。

 

说了这么多随处可见的东西,来两个实例,分别是get和post请求操作

get实例,url地址为百度地址,代码如下:

 1 import java.io.IOException;
 2 
 3 import org.apache.http.HttpEntity;
 4 import org.apache.http.client.ClientProtocolException;
 5 import org.apache.http.client.methods.CloseableHttpResponse;
 6 import org.apache.http.client.methods.HttpGet;
 7 import org.apache.http.impl.client.CloseableHttpClient;
 8 import org.apache.http.impl.client.HttpClients;
 9 import org.apache.http.util.EntityUtils;
10 
11 public class yihuqingjiu_get {
12 
13     public static void main(String[] args) throws ClientProtocolException, IOException{
14         //创建httpclient对象
15         CloseableHttpClient httpClient = HttpClients.createDefault();
16         //创建请求方法的实例, 并指定请求url
17         HttpGet httpget=new HttpGet("http://www.baidu.com");
18         //获取http响应状态码
19         CloseableHttpResponse response=httpClient.execute(httpget);
20         HttpEntity entity=response.getEntity();
21         //接收响应头
22         String content=EntityUtils.toString(entity, "utf-8");
23         System.out.println(httpget.getURI());
24         System.out.println(content);
25         httpClient.close();
26     }
27 
28 }

控制台显示结果如下图所示:

技术分享

 

post实例,url地址为禅道地址,代码如下:

 1 import java.io.IOException;
 2 import java.util.ArrayList;
 3 import java.util.List;
 4 
 5 import org.apache.http.HttpEntity;
 6 import org.apache.http.NameValuePair;
 7 import org.apache.http.client.entity.UrlEncodedFormEntity;
 8 import org.apache.http.client.methods.CloseableHttpResponse;
 9 import org.apache.http.client.methods.HttpPost;
10 import org.apache.http.impl.client.CloseableHttpClient;
11 import org.apache.http.impl.client.HttpClients;
12 import org.apache.http.message.BasicNameValuePair;
13 import org.apache.http.util.EntityUtils;
14 
15 public class yihuqingjiu_post {
16 
17     public static void main(String[] args) {
18         CloseableHttpClient httpClient = null;
19         CloseableHttpResponse response = null;
20         HttpEntity entity = null;
21         String responseContent = null;
22         String url = "http://127.0.0.1:81/zentao/user-login-L3plbnRhby8=.html";
23         try {
24             httpClient = HttpClients.createDefault();
25             HttpPost httpPost = new HttpPost(url);
26             List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
27             nameValuePairs.add(new BasicNameValuePair("account", "admin"));
28             nameValuePairs.add(new BasicNameValuePair("password", "LHongboss941025"));
29             httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
30             response = httpClient.execute(httpPost);
31             entity = response.getEntity();
32             responseContent = EntityUtils.toString(entity, "utf-8");
33             System.out.println(responseContent);
34             System.out.println(httpPost.getURI());
35             System.out.println(response);
36             httpClient.close();
37         } catch (IOException e) {
38             e.printStackTrace();
39         }
40     }
41 
42 }

 控制台显示结果如下图所示:

技术分享

 

本文仅代表作者观点,系作者@温一壶清酒发表。转载请注明出处:http://www.cnblogs.com/hong-fithing/

 

以上是关于接口测试——httpclient介绍与请求方式详解的主要内容,如果未能解决你的问题,请参考以下文章

.Net及.Net Core下HttpClient详解

接口测试HttpClient&fastJson 总结与案例

Jmeter介绍

HttpClient使用详解

使用HttpClient工具类测试WebService接口(Soap)与Http接口,这里测试WebService接口,测试http接口实现方式类似

HttpClient使用详解