接口测试(二)—HttpClient

使用HttpClient进行接口测试,所需要使用的相关代码

HttpClient进行接口测试
所需jar包:httpclient.jar、httpcore.jar、commons-logging.jar
Get请求:
//创建httpclient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
//如果发送的是GET请求,创建HttpGet对象
HttpGet httpget = new HttpGet("http://www.baidu.com/");
//执行GET请求
CloseableHttpResponse response = httpClient.execute(httpget);

POST请求:
CloseableHttpClient httpClient = httpClients.createDefault();
//如果发送是POST请求,创建HttpPost对象
HttpPost httppost = new HttpPost("http://localhost:8080/login");
//post请求参数配置
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
formparams.add(new BasicNameValuePair("name","xxx"));
formparams.add(new BasicNameValuePair("pwd","123456"));
//设置编码格式为utf-8
UrlEncodedFormEntity uefEntity = new UrlEncodedFormEntity(formparams,"UTF-8");
httppost.setEntity(uefEntity);//设置POST请求参数
//使用httpclient的execute方法发送接口请求
CloseableHttpResponse response = new httpClient.execute(httppost);

创建HttpClient对象、response对象操作完毕后,需要进行释放
//释放连接
response.close();
httpClient.close();

常用方法:
1、设置请求和连接超时时间
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(20000).build();
//get请求设置请求和传输超时时间
httpget.setConfig(requestConfig);
//post请求设置请求和传输超时时间
httppost.setConfig(requestConfig);

2、获取响应头信息
Header headers[] = response.getAllHeaders();
    for(Header header:headers){
    //响应头信息名称
    System.out.println(header.getName());
    //头信息对应的值
    System.out.println(header.getValue());
    }

3、获取服务器指定头名称的响应头信息
Header Serverheaders[] = response.getHeaders("Server");

4、获取服务器返回状态码,如果等于200就说明请求和响应都成功了
response.getStatusLine().getStatusCode();
常见的错误码:
200 请求成功,且请求的信息包含在响应中
400 服务器未能识别请求
404 请求的资源不在服务器上
500 请求发生了错误

5、根据主机名获取其可能的所有服务器实际ip地址(可能包含多个服务器)
InetAddress[] address = InetAddress.getAllByName("www.baidu.com");
    for(int i = 0; i < address.length; i++){
        System.out.println(address[]);
    }

6、调用HttpResponse的getEntity()方法可获取HttpEntity对象,服务器的响应内容
String returnStr = EntityUtils.toString(response.getEntity());
(常见的服务器返回的响应内容一般有:xml、json格式等)

服务器响应内容解析
1、使用JSONObject插件处理xml、json响应数据
2、需要6个jar包:json-lib.jar、commons-beanutils.jar、commons-collections.jar、ezmorph.jar、commons-logging.jar、commons-logging.jar
xom.jar  把xml的数据转换成json的数据
String xml = "<?xml version=\"1.0\"encoding=\"UTF-8\"?><users><password>123456</password><username>xxx</username></users>";
XMLSerializer xmlSerializer = new XMLSerializer();
//使用xmlSerializer.read()方法可以将xml格式的数据转换成json格式数据
JSON json = xmlSerializer.read(xml);
//转换而成的JSON数据
{"password":"123456","username":"xxx"}

JSON常用解析方法
//将json字符串转换为JSONObject对象
JSONObject jsonObj = JSONObjec.fromObject(json字符串);
//获取name对应的值
jsonObj.getString("name");//取到节点对应的值xxx   jsonObj.getInt(XXX);
//判断json字符串中是否包含name节点,如果存在返回true
jsonObj.has("name");

解析复杂的结果
{
    "returncode":0,
    "message":"",
    "count":2,
    "result":{
        "users":[{"pwd":"123456","name":"xxx"},
            {"pwd":"123456","name":"aaa"}]
        }
    }

//将json字符串转换为JSONObject对象
JSONObject jsonObj = JSONObject.fromObject(json字符串);
//result是一个json对象,使用getJSONObject()来获取
JSONObject resultobj =jsonObj.getJSONObject("return");
//users是数组对象的话可以使用getJSONArray()来获取一个json数组
JSONArray userlist = resultobj.getJSONArray("users");
//可以循环获取数组中的对象元素
for(Object object:userlist){
    JSONObject user = (JSONObject)object;
    User.getString("pwd");
    User.getString("name");
}

时间: 2024-10-12 21:14:20

接口测试(二)—HttpClient的相关文章

Java进阶(三十二) HttpClient使用详解

Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性.因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入. 一.简介 HttpClient是A

JMeter接口测试 (二) ~ 参数化

对应qq群号:616961231 上篇内容介绍了jmeter的基本使用, 略微提了如何做参数化,  本篇对参数化做进一步深入讲解, 参数化可以将一个变量使用不同数据, 比如有多个用户下单购买商品,调用下单接口是同一个,但用户的id不相同,测试接口使用不同用户可以更为真实模拟用户场景, 也可以用在多用户并发场景. 还是延续昨天的例子展开,右键线程组->添加->配置元件->csv Data Set Config ? 本机home目录创建文件id.csv文件, 将文件目录设置在csv中,见图

接口测试概述:概念、目的、流程、工具、技能以及接口用例设计

一.什么是接口测试 二.接口测试流程 三.接口测试目的 四.接口测试用例设计 五.接口测试内容 六.接口测试工具 七.接口测试需要掌握的知识

HttpClient之初步认识与使用1

今天在项目中看到HttpClient的内容,然后去看了一下资料,有了初步的见解,在此记录一下~ 一. 搭建环境 (1)创建一个java项目叫HttpClientTest (2)为了使用HttpClient的类,你需要导入一下jar包: (3)创建一个类,名叫Test1 二.HttpClient模拟http请求 Test1代码如下: package com.vmaxtam; import org.apache.commons.httpclient.HttpClient; import org.ap

测试人员如何把控项目进度

项目背景简介 项目代称 K项目 项目成员 6人(1个测试猿的窘境:  1.需求文档不明确?  2.提测时间不明确?  3.项目进度不明确?  4.我是谁?我该干嘛?  想必每个测试猿都会遇到以上的窘境,版本到项目快截止时才提测,最后项目延误了,又要默默的背锅?  项目进行了半个月,依然没有我什么事儿,我真的不想国庆加班啊,去年就已经安排了今年的国庆节行程,怎么可能延误,必须要改变现状了··· 一.主动沟通,抛出问题 主动找研发经理沟通,抛出问题,提出解决方案:迈出这一步我也是三思而后行.  1.

做自动化测试之前,你必须要了解的

前言 随着软件测试技术的发展,人们已经从最初的纯粹的手工测试转变为手工与自动化测试技术相结合的测试方法.近年来自动化测试越来越受到人们的重视,对于自动化测试的研究也越来越多. 我在做自动化测试期间经历了不少的坑,有被动的坑,也有自己主动挖的坑,所以在这里做了一些总结.其实主要是总结下自动化测试的一些基础的内容,例如何时进行自动化.如何自动化.为何要自动化等等. >>1. 什么是自动化测试 首先是把人为驱动的测试行为改成机器执行,通过设计的测试用例,由机器按照测试用例的执行步骤对其进行自动操作,

接口自动化:HttpClient + TestNG + Java(二) - 第一个接口测试:get请求

在上一篇中,我们搭建好了HttpClient + TestNG + Java的自动化接口测试环境,这一篇我们就赶紧开始编写我们的第一个接口测试用例. 本篇会对问题解决的思路进行更详尽的阐述. 2.1 确定被测接口 首先一个现实的问题,我们要有一个待测接口来验证我们自动化方案的可行性. 我们可以选择在自己的本地去部署一套待测接口,当然也可以选择公网上的接口去进行测试,这里我们选择后者. 我选定的是apishop这个站点:https://www.apishop.net/ 这个站点提供非常多,种类齐全

HttpClient在HTTP协议接口测试中的使用

TTP协议的接口测试中,使用到最多的就是GET请求与POST请求,其中POST请求有FORM参数提交请求与RAW请求,下面我将结合HttpClient来实现一下这三种形式: 一.GET请求: GET请求时,参数一般是写在链接上的,代码如下: 1 public void get(String url){ 2 CloseableHttpClient httpClient = null; 3 HttpGet httpGet = null; 4 try { 5 httpClient = HttpClie

接口测试——HttpClient工具的https请求、代理设置、请求头设置、获取状态码和响应头

转自:https://www.cnblogs.com/hong-fithing/p/7617855.html https请求 https协议(Secure Hypertext Transfer Protocol) : 安全超文本传输协议, HTTPS以保密为目标研发, 简单讲HTTPS协议是由SSL+HTTP协议构建的可进行加密传输. 身份认证的网络协议, 其安全基础是SSL协议, 因此加密的详细内容请看SSL. 全称Hypertext Transfer Protocol overSecure