接口测试-Java代码实现接口请求并封装
前言:
在接口测试和Java开发中对接口请求方法进行封装都非常有必要,无论是在我们接口测试的时候还是在开发自测,以及调用某些第三方接口时,都能为我们调用和调试接口提供便捷;
Java实现对http请求的封装具体步骤:
一,针对常见的json数据的http-post请求进行封装工具类的实现如下:
ackage com.nuanshui.frms.pre.demo.utils; import com.nuanshui.frms.exchange.demo.utils.SSLProtocolSocketFactory;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.ByteArrayRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.protocol.Protocol; import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL; public class HttpRequestUtil
{
/**
* HTTP请求
* @param surl 接口请求url
* @param json 接口请求body-json字符串
*
* @return 接口返回结果
*/
public static String sendJsonWithHttp(String surl, String json) throws Exception
{
URL url = new URL(surl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
conn.setRequestMethod("POST");// 提交模式
conn.setRequestProperty("Content-Length", json.getBytes().length + "");
conn.setConnectTimeout(100000);// 连接超时单位毫秒 //
conn.setReadTimeout(200000);// 读取超时 单位毫秒
conn.setDoOutput(true);// 是否输入参数
conn.setDoInput(true);
conn.setUseCaches(false);
conn.connect();
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
out.write(json.getBytes());
out.flush();
out.close();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuffer sb = new StringBuffer();
String line;
while ((line = reader.readLine()) != null)
{
sb.append(line);
}
reader.close();
conn.disconnect(); return sb.toString();
}
}
二,观察系统中的接口,我们会发现除了后面的路径不一样,其根路径都是一样的,于是我们可以将路径拆分为根路径+详细子路径,这样我们进行环境切换时(即根目录切换)很方便,因为接口子路径一旦确定一般情况下不会再变更,所以可以像下面一样进行路径变量常量化,如下所示:
public class FrmsUtils {
public final static String URL = "http://www.baidu.com/";
public final static String QUERY_WHITELIST_URL = "whiteList";//白名单接口
}
三,现在我们已经完成了接口调用方法的封装和路径管理,我们现在只需要编写调用某个http接口的实际调用类了,直接使用HttpRequestUtil.sendJsonWithHttp()方法就能进行调用哦,详细使用方式如下:
import com.nuanshui.frms.pre.demo.FrmsUtils;
import com.nuanshui.frms.pre.demo.utils.HttpRequestUtil;
import com.nuanshui.frms.pre.demo.utils.HttpUtils;
import com.nuanshui.frms.pre.demo.utils.KeyAndValue;
import net.sf.json.JSONObject;
import sun.applet.Main; import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.LinkedList;
import java.util.List; public class WhiteListQueryDemo { public static void main(String[] args) {
String validatePhone="1562397271";//接口入参
String res;
try {
JSONObject jsonObject= new JSONObject();//new一个json对象
jsonObject.put("phoneNum",validatePhone);//将入参添加进去,多个参数就put多个
System.out.println(jsonObject.toString());//将json对象转换成字符串
System.out.println("URL: "+FrmsUtils.URL+ FrmsUtils.QUERY_WHITELIST_URL);//打印组合后的路径;
res = HttpRequestUtil.sendJsonWithHttp(FrmsUtils.URL+ FrmsUtils.QUERY_WHITELIST_URL,jsonObject.toString());//调用封装的请求方法,实现接口请求
System.out.println(res);//打印接口返回结果
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行main方法就能成功调用接口啦~在日志中就能查看接口返回结果哦~
上面一个接口的调用,可能封装的优点还没显现,但当我们需要调用另一个接口时,调用该方法时,优点就很明显了,我们只需要同二一样再编写一个类,就能实现了,是不是发现封装请求方法后,编写一个调用接口的请求类变得很简单了呢~
以上~对你有帮助的话,点个赞
接口测试-Java代码实现接口请求并封装的更多相关文章
- java中的http请求的封装(GET、POST、form表单形式)
目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,Ht ...
- [改善Java代码]在接口中不要存在实现代码
第3章 类.对象及方法 书读得多而不思考,你会觉得自己知道的很多. 书读得多而思考,你会觉得自己不懂的越来越多. —伏尔泰 在面向对象编程(Object-Oriented Programming,O ...
- 接口测试——Java + TestNG 国家气象局接口(json解析)实例
后端测试,主要以测试接口为主.需要代码支撑,近期便找了个天气接口捣鼓了. 使用到的工具是:Eclipse + TestNG + Maven + ReportNG,全国城市编码:http://www.c ...
- python自动化--接口请求及封装
基于http协议,最常用的是GET和POST两种方法. 接口文档需要包含哪些信息: 接口名称接口功能接口地址支持格式 json/xml请求方式请求示例请求参数(是否必填.数据类型.传递参数格式)返回参 ...
- java代码List接口和Arraylist类
总结: package clientFrame; import java.util.*; //集合类 List是一个接口.ArrayList是一个类 public class ArraylitTest ...
- Java代码模拟http请求的两种方式
z这里用百度地图的逆地理编码接口为例, 第一种方式:(通过jdk中的java.net包) 引入工具类 import java.net.URL; import java.net.URLConnectio ...
- java代码实现rabbitMQ请求
1.下载rabbitMQ的客户端,下载地址 http://www.rabbitmq.com/download.html
- 用java代码发送http请求
//发送post请求 PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL ...
- 使用非java代码编程
使用非JAVA代码 JAVA语言及其标准API(应用程序编程接口)应付应用程序的编写已绰绰有余.但在某些情况下,还是必须使用非JAVA编码.例如,我们有时要访问操作系统的专用特性,与特殊的硬件 ...
随机推荐
- JS系列:编程语言
1.编程语言 html+css标记语言 js:轻量级的交互语言->全栈编程语言 - 面向对象: + C++ + JAVA + PHP + C# (.net doc) + JS - 面向过程 + ...
- 材质(Material)和几何体(Geometry)
1. 材质 一个材质结合一个几何体可以组成一个mesh对象.材质就像物体的皮肤,决定了几何体的外表.例如:皮肤定义了一个几何体看起来是否像金属.透明与否,或者显示为线框. 基本的材质如下: 1. ...
- C程序编译和执行
编译 & 执行 C 程序 首先准备一个源码文件 hello.c 键入如下代码: #include <stdio.h> int main() { /* 我的第一个 C 程序 */ p ...
- STM32 EV1527无线通信(433)
EV1527无线通信 先说一下这个通信协议的数据格式,这个图片是我在手册里截的. 大家按照单片机类型计算周期,我的是STM32f103vb (4CLK大致等于350um) 发送时按照 先发同步码后发D ...
- visual studio 2015 开发时常见问题的解决方案
1.visual studio 2015 用printf函数打印时来不及看结果窗口就关闭 方案一 在所写的代码后面,加上system("PAUSE"); 如下:
- kubernetes第十二章--监控
- Java 之 Session 包含验证码登录案例
需求: 1. 访问带有验证码的登录页面login.jsp 2. 用户输入用户名,密码以及验证码. 如果用户名和密码输入有误,跳转登录页面,提示:用户名或密码错误 如果验证码输入有误,跳转登录页面, ...
- old english diamaund钻石
Diamond Di"a*mond (?; 277), n. [OE. diamaund, the hardest iron, steel, diamond, Gr. . Perh. the ...
- 深入了解Cookie和Session
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...
- SAP成都研究院的小伙伴们庆祝公司再次获得2019年最佳雇主的场景
日前,怡安集团旗下全球领先的人力资本管理咨询机构怡安翰威特与全球高管寻聘和领导力顾问公司史宾沙旗下Kincentric共同揭晓2019年中国最佳雇主榜单.SAP中国研究院凭借企业的创新文化和多元环境, ...