(简单记录,有问题请指出)直接用java语言对接口进行测试有很多便利的地方,比如说复杂的参数化、部署服务、扩展性等 下面我用两种方式简单列举下java直接往http接口发送参数,进行接口测试
一、方式一,简单不规范
此方法比较原始,最开始摸索的时候弄出来的
原理:
1.首先使用URL类创建URL对象
创建URL对象2.对指定url建立连接
建立连接3.设置相关属性,如请求方式、编码、参数类型等 类似http请求头的属性(可以通过F12在浏览器中查看)
4.创建输出流对象,并写入请求内容
创建流对象5.创建输入流对象,并从字符输入流读取文本,缓冲字符
6.再使用in.readLine()方法存储字符内容
7.此时就得到了服务器响应数据,解析json验证参数即可
代码截图/详解
代码截图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 数组对象。后面在根据自己项目的业务逻辑判断值即可
方法二、简单,比较规范
此方法是在方法一的基础上进行了一些优化,应该也有不足之处,可以优化或者指出
原理
和方法一基本一致
代码截图/详解
图1 图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,校验结果即可
网友评论