OkHttpClient

OkHttpClient

OkHttpClient 是由 Square 公司开发的一个流行的 HTTP 客户端库,它支持同步和异步 HTTP 请求,并提供了易于使用的 API 来处理 HTTP 协议的各个方面,如重定向、缓存、连接池等。

OkHttpClient 进行接口自动化测试

  1. Maven添加依赖

    <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp</artifactId>
                <version>4.9.0</version>
    </dependency>
    
  2. 发送请求

    • 创建 OkHttpClient 实例。

    • 对于 特殊请求,使用 RequestBody 来设置请求体。

    • 创建请求并设置请求的 URL、方法(GET、POST 等)、请求头等。

    • 发送请求,获取响应(调用 client.newCall(request).execute() 发送同步请求,或者使用 client.newCall(request).enqueue(callback) 发送异步请求。)

    • 读取响应(Response 对象)并处理响应体

    • 关闭响应

        //创建一个OkHttpClient对象发送请求
              OkHttpClient okHttpClient = new OkHttpClient();
              //构造请求参数-请求体
                  RequestBody requestBody = new FormBody.Builder()
                       .add("username", Base.USER_NAME)
                       .add("password", Base.PASS_WORD)
                       .add("sex","")
                       .add("sex","")
                       .add("img","")
                       .add("company","")
                       .add("money","")
                       .build();
                  //构造请求
              Request request = new Request.Builder()
                      .url(String.format("%s/v1/user/manager/company",Base.BASE_URL))
                      .post(requestBody)
                      .build();
              //发送请求,获取响应
              Response response = okHttpClient.newCall(request).execute();
              //打印响应体
              String res = response.body().string();
              System.out.println(res);
              //关闭响应
              response.close();
      

解析响应体

  1. Maven引入依赖

     <!-- ObjectMapper依赖项-->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.12.5</version>
            </dependency>
    
  2. 代码编写

    //解析响应结果(简单的Json)
             ObjectMapper objectMapper = new ObjectMapper();
             JsonNode jsonNode = objectMapper.readTree(res);
             token= jsonNode.get("data").get("token").asText();
     //提取orderID(复杂的Json)
            ObjectMapper objectMapper = new ObjectMapper();
            JsonNode jsonNode = objectMapper.readTree(res);
            JsonNode itemNode = jsonNode.get("data").get("item");
            int orderId = itemNode.get(0).get("order").get("id").asInt();
            System.out.println(orderId);
    
posted @ 2024-08-16 17:07  cxy领域展开  阅读(66)  评论(0编辑  收藏  举报