前言
在接口测试和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代码实现接口请求并封装的更多相关文章

  1. java中的http请求的封装(GET、POST、form表单形式)

    目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,Ht ...

  2. [改善Java代码]在接口中不要存在实现代码

    第3章  类.对象及方法 书读得多而不思考,你会觉得自己知道的很多. 书读得多而思考,你会觉得自己不懂的越来越多. —伏尔泰 在面向对象编程(Object-Oriented Programming,O ...

  3. 接口测试——Java + TestNG 国家气象局接口(json解析)实例

    后端测试,主要以测试接口为主.需要代码支撑,近期便找了个天气接口捣鼓了. 使用到的工具是:Eclipse + TestNG + Maven + ReportNG,全国城市编码:http://www.c ...

  4. python自动化--接口请求及封装

    基于http协议,最常用的是GET和POST两种方法. 接口文档需要包含哪些信息: 接口名称接口功能接口地址支持格式 json/xml请求方式请求示例请求参数(是否必填.数据类型.传递参数格式)返回参 ...

  5. java代码List接口和Arraylist类

    总结: package clientFrame; import java.util.*; //集合类 List是一个接口.ArrayList是一个类 public class ArraylitTest ...

  6. Java代码模拟http请求的两种方式

    z这里用百度地图的逆地理编码接口为例, 第一种方式:(通过jdk中的java.net包) 引入工具类 import java.net.URL; import java.net.URLConnectio ...

  7. java代码实现rabbitMQ请求

    1.下载rabbitMQ的客户端,下载地址 http://www.rabbitmq.com/download.html

  8. 用java代码发送http请求

    //发送post请求 PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL ...

  9. 使用非java代码编程

    使用非JAVA代码     JAVA语言及其标准API(应用程序编程接口)应付应用程序的编写已绰绰有余.但在某些情况下,还是必须使用非JAVA编码.例如,我们有时要访问操作系统的专用特性,与特殊的硬件 ...

随机推荐

  1. Spark学习(2) RDD编程

    什么是RDD RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.弹性.里面的元素可并行计算的集合 RDD允 ...

  2. 【C语言】 strlen()入参空指针导致段错误

    背景: 在工作中调试sqlite3相关代码的时候,调用printf()打印sqlite3_exec()的执行日志:因为sqlite3_exec()保存日志的参数传入时为NULL,且没有执行错误,所以再 ...

  3. 远程登录Linux系统(使用xshell),远程上传加载文件(使用Xftp)

    一.Xshell(远程登录Linux系统) 1.安装xshell 自己百度找安装包 2.连接登录 1.连接前提 需要Linux开启一个sshd的服务,监听22号端口,一般默认是开启的 查看是否开启: ...

  4. POJ 1321 棋盘问题(C)回溯

    Emmm,我又来 POJ 了,这题感觉比上次做的简单点.类似皇后问题.但是稍微做了一点变形,比如棋子数量是不定的.棋盘形状不在是方形等等. 题目链接:POJ 1321 棋盘问题 解题思路 基本思路:从 ...

  5. asp.net EFcore配置链接sqlserver

    1. 首先我们先用vs2017 创建一个空的 asp.net core api 项目 2.  在生成的解决方案下在建立一个访问数据库使用的类库CoreApi.Model,注意要选择.netcore下的 ...

  6. pytest_函数传参和firture传参数request

    前言为了提高代码的复用性,我们在写用例的时候,会用到函数,然后不同的用例去调用这个函数. 比如登录操作,大部分的用例都会先登录,那就需要把登录单独抽出来写个函数,其它用例全部的调用这个登陆函数就行. ...

  7. 打印从1到n位数的最大值

    题目: 输入数字n,按顺序打印从1到最大的n位十进制数,如输入3,则打印从1.2.3一直到最大的3位数999 参考大数运算的方法.考虑到位数会很大,所以采用字符串的形式解决.对输入的n,创建一个长度为 ...

  8. 关于SQL中SELECT *(星号)的危害论

    听闻有许多人是禁止开发人员在SQL中使用SELECT *的,这里翻译一下StackOverflow的一篇提问,个人认为相当客观 [SELECT *]危害主要有以下几点: 给数据消费者传数据的低效.当你 ...

  9. (四) Docker 使用Let's Encrypt 部署 HTTPS

    参考并感谢 周花卷 https://www.jianshu.com/p/5afc6bbeb28c 下载letsencrypt镜像(不带tag标签则表示下载latest版本) docker pull q ...

  10. SpringBoot开发验证码功能

    简介 验证码主要是用来防止恶意破解密码.刷票.论坛灌水.刷页.Kaptcha 是一个可高度配置的实用验证码生成工具,使用也很简单,这里就使用它来做验证码. 另外使用JAVA原生的API也可以实现验证码 ...