当前位置: 首页 > article >正文

OkHttp接口自动化测试

文章目录

  • java环境搭建
  • OkHttp之get
  • OkHttp之POST
    • POST发送From表单
    • POST发送json
    • POST上传文件
  • OkHttp之delete
  • OkHttp之put

java环境搭建

  • 引入依赖
<!--okhttp3-->
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.9.0</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.5</version>
        </dependency>

OkHttp之get

  • 基本语法格式
	// 1.创建一个OkHttpClient
    OkHttpClient okHttpClient = new OkHttpClient();
    // 2.创建一个Request  (对应的数据:url、请求数据)
    Request request = new Request.Builder()
            .url("https://www.baidu.com")
            .build();
    // 3.发送请求
    Response response = okHttpClient.newCall(request).execute();
    // 4.获取响应
    String result = response.body().string();    
    // 5.关闭连接
    response.close();

在这里插入图片描述

OkHttp之POST

POST发送From表单

  • post请求
package interfaceTest;

import okhttp3.*;

import java.io.IOException;

public class PostDemo {
    public static void main(String[] args) throws IOException {
        // 1.创建一个OkHttpClient  (发送请求)
        OkHttpClient okHttpClient = new OkHttpClient();
        // 2.创建一个Request  (对应的数据:url、请求数据)

        // 构造请求参数
        RequestBody requestBody = new FormBody.Builder()
                .add("username", "zhangsan")  // 用户名
                .add("password", "123456") // 密码
                .build();

        Request request = new Request.Builder()
                .url("http://127.0.0.1:8080/login")
                .post(requestBody)
                .build();
        // 3.发送请求
        Response response = okHttpClient.newCall(request).execute();

        // 4.获取响应
        String result = response.body().string();

        if(response.isSuccessful()) {
            System.out.println("请求成功");
            System.out.println(result);
        }

        // 5.关闭连接
        response.close();
    }
}

在这里插入图片描述
在body中,需要主要数据格式
以下是一个常见的Content-Type(内容类型)与请求体(body)对应关系示例图表,主要涵盖了几种常见的在网络请求等场景中会用到的类型:

Content-Type描述示例 Body 格式
application/json用于表示数据以 JSON 格式传输,常用于 RESTful API 交互等场景。{"name": "John", "age": 30, "city": "New York"}(JSON 对象形式,包含键值对)
application/x-www-form-urlencoded数据被编码成键值对形式,类似 URL 查询字符串的格式,常用于 HTML 表单提交(传统方式)。name=John&age=30&city=New York(键值对用 & 连接,键和值之间用 = 连接)
multipart/form-data常用于在一个请求中同时上传文件和包含其他表单数据,它把不同类型的数据分成多个部分来传输。以下是一个简单示例,包含文本和文件两部分:
--boundary_string
Content-Disposition: form-data; name=“text_data”

Some text here
–boundary_string
Content-Disposition: form-data; name=“file”; filename=“example.txt”
Content-Type: text/plain

[文件内容,此处省略具体文本展示]
–boundary_string-- (其中 boundary_string 是用于分隔各部分的边界字符串,会自动生成)
text/plain表示纯文本格式,常用于简单的文本数据传输。This is a simple text message(就是普通的文本内容)

你可以根据实际使用场景进行参考,不同的应用场景和开发框架中,具体的使用细节和规则可能会有一定差异。

在这里插入图片描述

POST发送json

  • POST发送json格式
package interfaceTest;

import okhttp3.*;

import java.io.IOException;

// 通过post发送json格式的数据    
public class PostAddChartDemo {
    public static void main(String[] args) throws IOException {
        // 1.创建一个OkHttpClient  (发送请求)
        OkHttpClient okHttpClient = new OkHttpClient();
        // 2.创建一个Request  (对应的数据:url、请求数据)

        // 创建一个请求体 -body
       String data = "{\"username\":\"admin\",\"password\":\"123456\"}";

//       RequestBody requestBody = RequestBody.create(数据格式,数据);
        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), data);


        Request request = new Request.Builder()
                .url("http://127.0.0.1:8080/login/addChartButByMoke")
                .post(requestBody)
                .build();
        // 3.发送请求
        Response response = okHttpClient.newCall(request).execute();

        // 4.获取响应
        String result = response.body().string();

        if(response.isSuccessful()) {
            System.out.println("请求成功");
            System.out.println(result);
        }

        // 5.关闭连接
        response.close();
    }
}

POST上传文件

 public static void main(String[] args) throws IOException {
        // 1.创建一个OkHttpClient  (发送请求)
        OkHttpClient okHttpClient = new OkHttpClient();

        // 数据格式
        MediaType mediaType =  MediaType.parse("image/jpeg");

        // 构造请求参数 - 文件
        File filePath = new File("C:\\youFilePath");
        RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
                .addFormDataPart
                        ("file", "youFileName", RequestBody.create(mediaType, filePath))
                .build();
        
        Request request = new Request.Builder()
                .url("http://127.0.0.1:8080/postFile")
                .post(requestBody)
                .build();
        // 3.发送请求
        Response response = okHttpClient.newCall(request).execute();

        // 4.获取响应
        String result = response.body().string();

        if(response.isSuccessful()) {
            System.out.println("请求成功");
            System.out.println(result);
        }

        // 5.关闭连接
        response.close();
    }

OkHttp之delete

 public static void main(String[] args) throws IOException {
        // 1.创建一个OkHttpClient  (发送请求)
        OkHttpClient okHttpClient = new OkHttpClient();

        // 数据 171 可以分离出来
        String userId = new String("171");
        String url = String.format("http://127.0.0.1:8080/login/deleteChartButByMoke/%s", userId);
        // 然后把url放到url里面

        // 2.创建一个Request  (对应的数据:url、请求数据)
        Request request = new Request.Builder()
                .url("http://127.0.0.1:8080/login/deleteChartButByMoke/171")
                .delete()
                .build();
        // 3.发送请求
        Response response = okHttpClient.newCall(request).execute();

        // 4.获取响应
        String result = response.body().string();
        if(response.isSuccessful()) {
            System.out.println("请求成功");
            System.out.println(result);
        }

        // 5.关闭连接
        response.close();
    }

OkHttp之put

public static void main(String[] args) throws IOException {
        // 1.创建一个OkHttpClient  (发送请求)
        OkHttpClient okHttpClient = new OkHttpClient();

        // 数据 171 可以分离出来
        String userId = new String("171");
        String url = String.format("http://127.0.0.1:8080/login/deleteChartButByMoke/%s", userId);
        // 然后把url放到url里面

        // 构建需要修改的数据

        RequestBody requestBody = new FormBody.Builder()
                .add("userId", userId)
                .add("userName", "zhangsan")
                .add("password", "123456")
                .add("email", "123456@qq.com")
                .add("phone", "123456")
                .add("sex", "男")
                .add("birthday", "1999-01-01")
                .build();


        // 2.创建一个Request  (对应的数据:url、请求数据)
        Request request = new Request.Builder()
                .url("http://127.0.0.1:8080/login/deleteChartButByMoke/171")
                .put(requestBody)
                .build();
        // 3.发送请求
        Response response = okHttpClient.newCall(request).execute();

        // 4.获取响应
        String result = response.body().string();
        if(response.isSuccessful()) {
            System.out.println("请求成功");
            System.out.println(result);
        }

        // 5.关闭连接
        response.close();
    }

http://www.kler.cn/a/466101.html

相关文章:

  • 【Vue】分享一个快速入门的前端框架以及如何搭建
  • 使用qiankun搭建微前端应用及踩坑
  • Elasticsearch与数据库数据一致性:最佳实践与解决方案
  • 计算机网络练习题
  • IEEE PDF eXpress遇到Font TimesNewRomanPSMT is not embedded的解决方案
  • 联发科MTK6771/MT6771安卓核心板规格参数介绍
  • 比Qt更适合小公司的C++界面开发框架wxWidgets
  • Large-Vision-Language-Models-LVLMs--info:deepseek-vl模型
  • K8s集群平滑升级(Smooth Upgrade of K8S Cluster)
  • Geoserver修行记-后端调用WMS/WMTS服务无找不到图层Could not find layer
  • 【每日学点鸿蒙知识】自定义键盘光标、Cavas绘制、XComponent触发键盘抬起等
  • 三维扫描技术如何让历史文物‘活’起来
  • 如何使用axios设置响应拦截器和请求拦截器
  • Web 开发入门:从前端到后端的全栈开发探索
  • Kafka【基础 02】集群+副本机制+数据请求+物理存储+数据存储设计(图片来源于网络)
  • 高级java每日一道面试题-2025年01月03日-并发篇-什么是Callable和Future?
  • docker 安装influxdb
  • Docker Compose 构建 EMQX 集群 实现mqqt 和websocket
  • 8、RAG论文笔记(Retrieval-Augmented Generation检索增强生成)
  • kubernetes学习-kubectl命令、探针(二)
  • 我的JAVA-Web进阶--Maven
  • 力扣209. 长度最小的子数组
  • 深入理解计算机系统—虚拟内存(一)
  • 【C++】set与map模拟实现
  • 数据可视化搭配数据分析,解锁数据潜能的密码
  • 利用大语言模型解决推理任务