接口测试(二)—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");
}
接口测试(二)—HttpClient的更多相关文章
- Java进阶(三十二) HttpClient使用详解
Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们 ...
- 使用robotframework做接口测试二——处理响应数据
初使用RequestsLibrary做接口测试时,你会不会感到困惑,为什么会有${resp.content}, ${resp.status_code}这样的写法,这个status_code什么鬼,f5 ...
- 利用unittest+ddt进行接口测试(二):使用yaml文件管理测试数据
知道ddt的基本使用方法之后,练习把之前用excel文件来维护的接口测试用例改用unittest+ddt来实现. 这里我选用yaml文件来管理接口参数,开始本来想用json,但是json无法添加注释, ...
- 【接口测试】HttpClient+fastJson 总结与案例
多次理解,反复练习,破釜沉舟. HttpCLient是什么 Apache Jakarta Common 下的子项目 支持 HTTP 协议的客户端编程工具包 支持 HTTP 协议最新的版本 怎么利用Ht ...
- 接口测试 java+httpclient+testng+excel
最近项目不忙,研究了下java实现接口自动化,借助testng+excel实现数据驱动 目前只用post方式测试,返回结果列没有通过列名去找 另外,请求参数是转义之后的,接口之间的依赖也是个问题,批量 ...
- JMeter接口测试 (二) ~ 参数化
对应qq群号:616961231 上篇内容介绍了jmeter的基本使用, 略微提了如何做参数化, 本篇对参数化做进一步深入讲解, 参数化可以将一个变量使用不同数据, 比如有多个用户下单购买商品,调用 ...
- jmeter bean shell断言加密的响应信息(加密接口测试二)
断言加密的响应信息 1.在http请求-->添加-->断言-->bean shell 断言 import com.changfu.EncryptAndDecryptInterface ...
- Requests接口测试(二)
requests安装先看下怎么安装requests, 执行以下命令: pip install requests 安装好后如何导入requests模块呢? 如下所示: import requests 基 ...
- Loadrunder脚本篇——webservice接口测试(二)
1.选择协议--Web Service,如下图 2.导入服务 入口1:点击Manage Services ->弹出窗中选择“Import” ->弹出窗中选择“URL”,填写wsdl地址,导 ...
- httpclient的主要业务代码逻辑(图解)
一,主要代码逻辑(图解) 二,两个案例的对比(图解) 三,详细案例 3.1,博文一 httppost的用法(NameValuePair(简单名称值对节点类型)核心对象) 3.2,博文二 httpcli ...
随机推荐
- requirejs(一)
RequireJs已经流行很久了,我们在项目中也打算使用它.它提供了以下功能: 声明不同js文件之间的依赖 可以按需.并行.延时载入js库 可以让我们的代码以模块化的方式组织 初看起来并不复杂. 在h ...
- VirtualBox使用总结
解决VirtualBox安装Mac OS X El Capitan开机卡住问题 在配置完新虚拟机后关闭VirtualBox,用管理员权限启动CMD,转到VirtualBox安装目录,依次运行下列指令: ...
- SOAPUI测试步骤----DataGen TestStep
DataGen TestStep DataGen TestStep可以用来生成数据输入在你 TestCases ,例如数字或日期序列.随机选择等生成的数据作为属性,因此可以转移 和扩张就像任何其他属性 ...
- 冰球项目日志2-yjw
我们小组在12.31号进行了讨论,确定了基本的任务及分工,后面是元旦放假,大家没有做很多的东西,我也是把自己分工的部分方案想了下. 后面在1.3号,我们会再进行一次小组讨论,确定下最终的方案,然后进行 ...
- html容易犯的错误
原文地址:http://www.jb51.net/web/20593.html 在晚上看见一个不错的文章,可惜里面的错误都是我经常犯的…… 我们最好开始注意了,因为HTML Police会走遍你的代码 ...
- compass color 颜色 对比色[Sass和compass学习笔记]
最基本的api 是对比色,对与我这种菜鸟来说,没有什么比在一个背景色下 用什么颜色的文字坑蛋疼的事情了,这个工具可以帮助大家很好解决这个问题 api 地址 http://compass-style.o ...
- 【BZOJ】3309: DZY Loves Math
题意 \(T(T \le 10000)\)次询问,每次给出\(a, b(1 \le a, b \le 10^7)\),求 \[\sum_{i=1}^{a} \sum_{j=1}^{b} f((i, j ...
- bzoj1468 Tree
最经典的点分治题目,在递归子树的时候减去在算父亲时的不合法方案. #include<iostream> #include<cstdio> #include<cstring ...
- [转]Flash Player、AIR、Flex SDK 大全
平时不断看到有朋友在各种论坛.空间.知道.群里求 Flash 平台各种版本的运行时(Flash Player)和SDK(Flex.AIR).今天就看到不下10次!所以决定把 Macromedia.Ad ...
- java抽象类
Java 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不 ...