使用httpClient进行接口测试
来源:互联网 发布:算法 布料裁剪问题 编辑:程序博客网 时间:2024/05/01 07:55
概述
现今很多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);
- }
- }
- }
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
{"age":30,"name":"jingshou"}jingshou:30**********{"age":30,"name":"jingshou"}name1= jingshouage1= 30{"age":29,"name":"xiaohong"}name1= xiaohongage1= 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();
- }
- }
- }
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); // 使用返回的字符串直接构造一个JSONObjectJSONObject jsonobj = new JSONObject(resString);System.out.println(jsonobj.toString());// 获取返回对象中"resultSize的值"int resutltSize = jsonobj.getInt("resultSize");System.out.println("Search Results Size is: "+ resutltSize); // 获取"clients"的值,它是一个JSONArrayJSONArray 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}]
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
0 0
- 使用httpClient进行接口测试
- 使用HttpClient进行远程接口测试
- 使用HttpClient实现接口测试
- HttpClient +Testng(1)进行接口测试入门
- 使用URLConnection与HttpClient进行接口对接
- 使用HttpClient测试SpringMVC的接口
- 使用UFT进行接口测试
- 使用fiddle进行接口测试
- 使用python进行接口测试
- testNG+httpclient接口测试
- 接口测试 - httpClient
- 接口测试之HttpClient
- HttpClient天气接口测试
- HttpClient之接口测试
- HttpClient测试接口Test
- HttpClient在HTTP协议接口测试中的使用
- HttpClient在HTTP协议接口测试中的使用
- java HttpClient在Http协议接口测试中的使用
- Git本地及远程库创建
- 关于javaScript记住密码的简单COOK操作
- 什么软件可以让手机使用免费WiFi上网
- linux基础服务的一个小综合应用
- android 音频视频合并
- 使用httpClient进行接口测试
- web应用开发基本的几个方面
- js中日期创建
- 执行nginx报错,找不到库./sbin/nginx: error while loading shared libraries: libcrypto.so.6: cannot open share
- iptables配置实例
- 关于iOS架构的问题
- CocoaPods 手把手五分钟教你制作自己的podspec文件
- 黑马程序员--'1封感人的来信—穷的只剩下梦想,1个黑马程序员的追梦之旅
- Convert Sorted Array to Binary Search Tree