三、JAVA接口测试框架设计 -用 OKHTTP 实现接口请求

使用okhttp 编写一个接口请求工具:

1.需要下载的包,添加到pom文件中,更新maven即可:

    
    
      com.squareup.okhttp3
      okhttp
      5.0.0-alpha.10
    
    
    
      com.alibaba
      fastjson
      1.2.24
    

2.新建一个文件,文件名为:requestHttp.java。
3.在requestHttp类下,新建请求方法:
(1)get请求:

 public JSONObject getClient( String url ) throws IOException {

        //获取自定配置对象 可设置拦截器、超时配置
        OkHttpClient httpClient = new OkHttpClient.Builder()
                .connectTimeout(Duration.ofSeconds(500))
                .readTimeout(Duration.ofSeconds(200))
                .build();
        //构造 Request 对象
        Request request = new Request.Builder()
                .url(url).get()
                .addHeader("Content-Type","text/plain")
                .build();
        // call方法进行请求
        Call call = httpClient.newCall(request);
        JSONObject results = JSON.parseObject(call.execute().body().string());

        // 返回call同步请求返回值
        return results;

    }

给方法传入请求接口,即可调用get请求:

    public static void main(String[] args) throws IOException {
        String requestUrl ="http://www.baidu.com";
        requestHttp requestHttp = new requestHttp();
        Response re = requestHttp.getClient(requestUrl);

    }

(2)json传参的post请求:

 // post请求
    public JSONObject postClientJson( String urls,String bodys) throws IOException {
        // 获取配置对象
        OkHttpClient httpClient = new OkHttpClient.Builder()
                .connectTimeout(Duration.ofSeconds(500))
                .readTimeout(Duration.ofSeconds(200))
                .build();
        //构造content-type 头
        MediaType mediaType = MediaType.Companion.parse("application/json,charset=utf-8");
        // 构造请求参数
        RequestBody requestBody = RequestBody.Companion.create(bodys,mediaType);
        // 构造request 对象
        Request request = new Request.Builder()
                .url(urls).post(requestBody)
                .addHeader("Content-Type","application/json")
//                .addHeader("Accept-Encoding","gzip, deflate")

                .build();
        Call call = httpClient.newCall(request);
        JSONObject results = JSON.parseObject(call.execute().body().string());
        return results;

    }

给方法传入请求接口,即可调用post请求:

    public static void main(String[] args) throws IOException {
        String requestUrl ="http://*****";
        String bodys = "{"a":1,"b":"c"}";
        requestHttp requestHttp = new requestHttp();
        Response re = requestHttp.postClientJson(requestUrl,bodys);

    }

接口请求是接口测试框架设计中重要的步骤,重点是灵活性和可复用性。
其中header信息中会有常用的认证信息,可以通过配置文件读取的方式。

注意事项
*在直接复制代码后有些工具包未引入,直接根据提示引入即可
 * 获取接口返回值时,后面不能使用tostring转换,需要使用string()进行转换
 * 获取返回值内容乱码,可能是header中“Accept-Encoding” 的格式为gzip, deflate,okhttp无法处理gzip的解压返回不是gzip数据格式了,所以没法解压,解决方案是删除header中的Accept-Encoding
 * create方法在okhttp4更换了用法:
 MediaType mediaType = MediaType.Companion.parse("application/json,charset=utf-8");
 RequestBody requestBody = RequestBody.Companion.create("参数",mediaType);
* 所有请求均使用同步请求的方式,可尝试更换为异步请求

你可能感兴趣的:(三、JAVA接口测试框架设计 -用 OKHTTP 实现接口请求)