概述
现今很多Web应用开发都是分前后台的,后台开发提供接口调用返回Json对象,前台使用JS框架去加载后台返回的Json.本文以实例简述如何通过HttpClient测试这样的后台接口
处理Json对象的基本API
JSON包中最常用的两个类就是JSONObject和JSONArray,具体可以参考JSON for java入门总结
如下是自己模仿的简单例子:
package com.james.json; import org.json.JSONArray; import org.json.JSONObject; public class JsonTest { public static void main(String[] args) { // Test JSONObject. JSONObject jsonobj = new JSONObject("{'name':'jingshou','age':30}"); String name = jsonobj.getString("name"); int age = jsonobj.getInt("age"); System.out.println(jsonobj.toString()); System.out.println(name+":"+age); System.out.println("**********"); // Test JSONArray. JSONArray jsonarray = new JSONArray("[{'name':'jingshou','age':30},{'name':'xiaohong','age':29}]"); for(int i=0;i<jsonarray.length();i++){ JSONObject jo = jsonarray.getJSONObject(i); System.out.println(jo); String name1 = jo.getString("name"); int age1 = jo.getInt("age"); System.out.println("name1= "+name1); System.out.println("age1= "+age1); } } }
运行结果如下:
{"age":30,"name":"jingshou"} jingshou:30 ********** {"age":30,"name":"jingshou"} name1= jingshou age1= 30 {"age":29,"name":"xiaohong"} name1= xiaohong age1= 29
从以上例子我们看到的基本事实是:
- 可以通过字符串直接构造一个JSONObject
- JSONObject里的key在显式传入的时候是用单引号包裹起来的,但是打印出来的时候依然是我们期望的双引号
使用httpclient处理API返回
如下例子演示如何使用httpClient获取API返回的JSON字符串以及处理:
package com.james.json; import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.json.JSONArray; import org.json.JSONObject; public class SimpleServiceTest { public static void main(String[] args) throws ClientProtocolException, IOException { CloseableHttpClient httpclient = HttpClients.createDefault(); HttpPost httppost = new HttpPost("http://jingshou.com/admin/searchUser.action?search_loginid=jingshou"); CloseableHttpResponse response = httpclient.execute(httppost); try { HttpEntity myEntity = response.getEntity(); System.out.println(myEntity.getContentType()); System.out.println(myEntity.getContentLength()); String resString = EntityUtils.toString(myEntity); // 使用返回的字符串直接构造一个JSONObject JSONObject jsonobj = new JSONObject(resString); System.out.println(jsonobj.toString()); // 获取返回对象中"resultSize的值" int resutltSize = jsonobj.getInt("resultSize"); System.out.println("Search Results Size is: "+ resutltSize); // 获取"clients"的值,它是一个JSONArray JSONArray jsonarray = jsonobj.getJSONArray("clients"); System.out.println(jsonarray.toString()); } finally { response.close(); } } }
运行结果如下:
Content-Type: text/plain; charset=UTF-8 -1 {"resultSize":1,"clients":[{"expirationDate":0,"reqStatus":0,"mostRecentActivity":1388376890000,"clientName":"Jingshou Li","company":"Pending","internal":true,"clientId":"jingshou","salesNames":"","disabled":false}]} Search Results Size is: 1 [{"expirationDate":0,"reqStatus":0,"mostRecentActivity":1388376890000,"clientName":"Jingshou Li","company":"Pending","internal":true,"clientId":"jingshou","salesNames":"","disabled":false}]
小结:
- 通过API返回的JSON字符串直接构造JSON对象
- 如果要读取JSONObject内部数据,需要事先知道对象的结构,所以以上处理方法不具有通用性,只能处理特定的返回
补充学习:
- http://cgs1999.iteye.com/blog/1608003
- http://cgs1999.iteye.com/blog/1609756
原创文章,转载请注明出处,原文地址:使用httpClient进行接口测试
相关推荐
httpclient testgn 接口测试
基于jmeter+Java+HttpclientUtil实现的接口测试工具,通过Excel表格进行维护接口相关参数信息,借助Jmeter工具通过java请求设计接口测试自动化测试用例。代码重写了JavaSampleClient类,在使用过程中取出了冗余的...
本demo有两个例子test是作为服务端开启的,httpclient是客户端调用的,模拟服务端的test在启动后是没有界面的,要加上id才能看到json数据,httpclient的HttpClient33.java是测试类,最后的结果是接受到一个对象。...
# 接口测试 HTTP接口测试可以把后台逻辑单独进行测试,便于模块化测试和问题定位;...也可以跟UI自动化测试结合,提高回归测试自动化...|第三章|接口测试工具|Fiddler的使用 PostMan的使用 | |第四章|接口测试自动
测试httpclient,主要测试json参数的接口,包括get请求和post请求。
第一部分:主要从问题出发,引入接口测试的相关内容并与前端测试进行简单对比,总结两者之前的区别与联系。但该部分只交代了怎么做和如何做?并没有解释为什么要做?第二部分:主要介绍为什么要做接口测试,并简单...
附件是一个Java类,基于Java的第三方Jar包封装好的,可以直接使用,进行接口测试
NULL 博文链接:https://duanfei.iteye.com/blog/1944927
下面小编就为大家带来一篇基于HttpClient在HTTP协议接口测试中的使用(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
接口测试必备工具,httpclient 封装工具,
本例子是通过httpClient 不断的去电信的网站查询可选手机新号 , 每次查出来的数据保存到map , 到一定数量以后 , 保存在本地文件中 , 测试类可以直接运行.
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http...
本人接口自动化框架脑图,主要分为source、httpclient、mysql,unitl四大类
可以用作测试例子 测试流传输的接口需要用到,HTTPClient,jar包
E:\最全面的Java接口自动化测试实战\第2章 接口测试的用例设计 E:\最全面的Java接口自动化测试实战\第3章 手工接口测试到自动化框架设计 E:\最全面的Java接口自动化测试实战\第4章 企业级代码管理工具git的应用 E:\...
支持get、post等web请求,非常适合后台接口的调试、测试。
个人觉得这个工具比任何自动化测试框架都好使,使用关键字和数据双驱动,不需要写一行代码,无需维护脚本,只需要维护用例数据。Web元素只需要在Chrome中复制xPath即可,定位非常高效。 工具安全无木马,目的只为...
1.高效简单池化的HttpClient工具类,提供单元测试用列。 2.支持基于SpringBoot 2.1.x的自动装载模块,引用依赖即可使用。 3.公司几十个项目都使用该工具类访问第三方的Http/Https+json协议接口。 4.经过上市公司多个...
很多公司使用另开线程池的方式进行异步调用来解决tomcat线程阻塞问题。但由于本系统中接口网络太不稳定,使用线程池也将导致线程池中的线程不断加大,不管使用怎样的线程池策略,最终要么线程池线程全部挂起,要么...
HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用了HttpClient。 下载地址: http://hc.apache.org/downloads.cgi 1.2特性 1. 基于标准、纯净的java语言。...