使用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的更多相关文章

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

    Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们 ...

  2. 使用robotframework做接口测试二——处理响应数据

    初使用RequestsLibrary做接口测试时,你会不会感到困惑,为什么会有${resp.content}, ${resp.status_code}这样的写法,这个status_code什么鬼,f5 ...

  3. 利用unittest+ddt进行接口测试(二):使用yaml文件管理测试数据

    知道ddt的基本使用方法之后,练习把之前用excel文件来维护的接口测试用例改用unittest+ddt来实现. 这里我选用yaml文件来管理接口参数,开始本来想用json,但是json无法添加注释, ...

  4. 【接口测试】HttpClient+fastJson 总结与案例

    多次理解,反复练习,破釜沉舟. HttpCLient是什么 Apache Jakarta Common 下的子项目 支持 HTTP 协议的客户端编程工具包 支持 HTTP 协议最新的版本 怎么利用Ht ...

  5. 接口测试 java+httpclient+testng+excel

    最近项目不忙,研究了下java实现接口自动化,借助testng+excel实现数据驱动 目前只用post方式测试,返回结果列没有通过列名去找 另外,请求参数是转义之后的,接口之间的依赖也是个问题,批量 ...

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

    对应qq群号:616961231 上篇内容介绍了jmeter的基本使用, 略微提了如何做参数化,  本篇对参数化做进一步深入讲解, 参数化可以将一个变量使用不同数据, 比如有多个用户下单购买商品,调用 ...

  7. jmeter bean shell断言加密的响应信息(加密接口测试二)

    断言加密的响应信息 1.在http请求-->添加-->断言-->bean shell 断言 import com.changfu.EncryptAndDecryptInterface ...

  8. Requests接口测试(二)

    requests安装先看下怎么安装requests, 执行以下命令: pip install requests 安装好后如何导入requests模块呢? 如下所示: import requests 基 ...

  9. Loadrunder脚本篇——webservice接口测试(二)

    1.选择协议--Web Service,如下图 2.导入服务 入口1:点击Manage Services ->弹出窗中选择“Import” ->弹出窗中选择“URL”,填写wsdl地址,导 ...

  10. httpclient的主要业务代码逻辑(图解)

    一,主要代码逻辑(图解) 二,两个案例的对比(图解) 三,详细案例 3.1,博文一 httppost的用法(NameValuePair(简单名称值对节点类型)核心对象) 3.2,博文二 httpcli ...

随机推荐

  1. Mac iTerm 很好用的终端

    配合Go2Shell使用,效果更佳!我建议你去商店下载它! 先去官网下载软件, 然后可以看看这一篇简明教程. 这里,还有一点点干货也一起带走吧! open -a Go2Shell --args con ...

  2. sublime text3点击ctrl+B无法运行Python程序?

    1.打开sublime text 3 ,选择 tools-->Build System-->New Build System.... 2.将下面代码块复制进新文件中,并命名为Python. ...

  3. CAS登录时不仅仅需要用户名来确认身份的情况

    最近在帮别人搞CAS,积累点经验 问题一:登录需要用户名和部门名称唯一确定一个用户,并将userid作为唯一标示. 在UsernamePasswordCredentials中添加userid 修改Qu ...

  4. 从零开始山寨Caffe·贰:主存模型

    你左手是内存,右手是显存,内存可以打死显存,显存也可以打死内存. —— 请协调好你的主存 从硬件说起 物理之觞 大部分Caffe源码解读都喜欢跳过这部分,我不知道他们是什么心态,因为这恰恰是最重要的一 ...

  5. Struts2二级菜单联动

    http://www.cnblogs.com/wujixing/p/5194461.html ps: Java面试 http://blog.csdn.net/zhang070809/article/d ...

  6. RMQ 数据结构

    RMQ 常用的数据结构之一 直接上代码 马克好来 是个好板子 #include <stdio.h> #define min(a,b) a<b ? a : b ],d[][]; voi ...

  7. chart.js 里添加图表的清单:

    chart.js 里添加图表的清单: var legend = myDoughnut.generateLegend(); $("#chart_legend").html(legen ...

  8. vmware 虚拟机中添加新网卡无配置文件

    系统:centos 6/7 问题: 为虚拟机添加新网卡后,/etc/sysconfig/network-scripts/下无配置文件ifcfg-eth1 #ip addr      //显示存在eth ...

  9. bzoj1717: [Usaco2006 Dec]Milk Patterns 产奶的模式(后缀数组+二分)

    /* 求可重叠的至少重复K次的最长字串 以1为下标起点,因为a[i]最大到1000000,所以要先离散一下 二分长度len 然后O(n)检验 后看h[i]是否有连续的一段h[i]大于len的,并且h[ ...

  10. CI框架入门1

    CI框架入门: 1.url的特点             2.目录结构/布局             3.MVC分别在哪里,如何依葫芦画瓢             4.安全性             ...