不使用web服务,直接通过java代码构造http请求,对接口测试

本文介绍了使用Java语言进行HTTP接口测试的两种方法。第一种方法较为原始,包括创建URL对象、建立连接、设置属性等步骤;第二种方法更为规范,通过设置请求方式、使用输出流传输数据、读取响应结果来实现。文章提供了详细的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(简单记录,有问题请指出)直接用java语言对接口进行测试有很多便利的地方,比如说复杂的参数化、部署服务、扩展性等   下面我用两种方式简单列举下java直接往http接口发送参数,进行接口测试

一、方式一,简单不规范

此方法比较原始,最开始摸索的时候弄出来的

原理:

1.首先使用URL类创建URL对象

12966103-3233cb04da979e8d.png

创建URL对象

2.对指定url建立连接

12966103-eb41bb21b1061eae.png

建立连接

3.设置相关属性,如请求方式、编码、参数类型等   类似http请求头的属性(可以通过F12在浏览器中查看)

4.创建输出流对象,并写入请求内容

12966103-a1f995cd99425c8b.png

创建流对象

5.创建输入流对象,并从字符输入流读取文本,缓冲字符

12966103-9e5e9682dc00a7d4.png

6.再使用in.readLine()方法存储字符内容

7.此时就得到了服务器响应数据,解析json验证参数即可

代码截图/详解

 

12966103-97d5bae9ce44eaa3.png

代码截图

url = new URL(URL+"config/store/paymode/list");

传入url,创建URL对象。上面是域名+路径

URLConnection connection = url.openConnection();

创建连接

connection.setDoOutput(true);

设置运行输入属性

connection.setRequestProperty("contentType", "UTF-8");

设置请求编码格式

OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");

创建OutputStreamWriter对象传输字节流。OutputStreamWriter 对象和getOutputStream方法介绍可以查jdk详解

out.write("mcode="+Mocde()[0]+"&device_en="+Mocde()[1]);

通过流对象,写入数据。这里参数格式类似web页面上get请求所带的参数

out.flush(); //刷新流

out.close();//关闭流

BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));

创建输入流对象,并从字符输入流读取文本,缓冲字符

String line = null;

 StringBuffer content= new StringBuffer();

while((line = in.readLine()) != null)

 {

          //line为返回值,这就可以判断是否成功、

            content.append(line);

}

line参数用于临时存放返回的数据,content用于存放返回的全部数据,readLine方法表示读取一行数据。通过while循环读取数据,把一行数据存入line,再累加到content中,构成完整数据

JSONObject object=(JSONObject) JSONObject.parse(content.toString());

将返回值转换为JSONObject对象

object.getIntValue("code")==0

根据getIntValue方法参数名为code的值,并和做比较

JSONArray objectArray=object.getJSONArray("data");

将data节点的数据值转换为JSONArray 数组对象。后面在根据自己项目的业务逻辑判断值即可

方法二、简单,比较规范

此方法是在方法一的基础上进行了一些优化,应该也有不足之处,可以优化或者指出

原理

和方法一基本一致

代码截图/详解

12966103-83282404b5f6ce45.png

图1

12966103-30f5f99f554acdea.png

图2

用于存放服务端响应的数据,已转换为String类型的数据

String result = "";

//用于存放服务端响应的字节流数据

BufferedReader reader = null;

./创建URL对象

URL url = new URL(urlPath);

//openConnection方法创建连接对象

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

//设置请求方式

conn.setRequestMethod("POST");

//设置为运行输入

conn.setDoOutput(true);

//设置为运行输出

conn.setDoInput(true);

..........

//把String类型的数据转换为byte数组类型

byte[] writebytes = Json.getBytes();

// 设置文件长度,避免后面数据写入输出流时内容长度不一致

conn.setRequestProperty("Content-Length", String.valueOf(writebytes.length));

//getOutputStream方法获头字段和内容

OutputStream outwritestream = conn.getOutputStream();

//将数据写入此输出流

outwritestream.write(Json.getBytes());

//判断响应的状态码是否是200,200表示正常响应

conn.getResponseCode() == 200

//创建输入流对象,并从字符输入流读取文本,缓冲字符

reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));

//获取数据

reader.readLine();

然后返回result,校验结果即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值