目录
HTTP的TCP/IP协议规定Post 提交的数据必须放在请求体中,但没有规定数据必须用什么编码方式,最常用的数据编码方式有:
Content-Type:application/x-www-form-urlencoded | form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式) |
Content-Type: multipart/form-data | 数据被编码为一条消息,一般用于多个文件上传 |
Content-Type: application/octet-stream | 提交二进制数据 如果用于文件上传,只能上传一个文件, |
Content-Type: application/json | 提交json数据 |
- HTTP content-type 对照表:HTTP content-type | 菜鸟教程
- 交互和调试REST、SOAP和HTTP接口的客户端插插件:Talend API Tester
- 国内下载地址:CrxDL - 下载谷歌浏览器(Chrome)扩展插件CRX
【讲解】一、单元测试 (Unit test)
(一)概述
定义:对软件中的最小可测试单元进行检查和验证
理解:为对开发人员所编写的代码进行测试
单元:大小(范围)没有明确标准,可以是一个函数、方法、类、功能模块或者子系统
(二) Android Java测试
【演示】二、multipart上传文件
准备
建立测试类——>测试方法(alt+insert)——>随便准备两个小文件用于测试
不知道keymap怎么用的,指路 JetBrains家族| Android Studio快捷键-优快云博客
(一)代码
媒体格式类型指路:HTTP content-type | 菜鸟教程
建议将代码敲下来,认真看注释
package com.example.okhttp3;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class UpdateFileUnitTest {
@Test
public void uploadFileTest() throws IOException {
//1.new 客户端对象 .var/ctrl+alt+v
OkHttpClient okHttpClient = new OkHttpClient();
File file1 = new File("E:\\Desktop\\1.txt");
File file2 = new File("E:\\Desktop\\2.txt");
//2.2请求体 ,演示多文件上传Multi-part
MultipartBody multipartBody = new MultipartBody.Builder()
//key:和服务器协商好的接受文件的name,文件名字,文件本身
//ctrl+p 看方法参数就明白了
.addFormDataPart("test1", file1.getName(),
RequestBody.create(file1, MediaType.parse("text/plain")))
.addFormDataPart("test2", file2.getName(),
RequestBody.create(file2, MediaType.parse("text/plain")))
.build();
//2.new 提交post 请求Request
Request request = new Request.Builder()
//2.1 ctrl+e 打开最近的文件复制网址
.url("https://www.httpbin.org/post")
//post()提交的数据必须放在请求体中
.post(multipartBody)
.build();
//3.newCall 接受请求
Call call = okHttpClient.newCall(request);
//4.call 发起请求 同步execute() 异步enqueue()
//在java里面,没有在Android中,不涉及必须在子线程中完成网络请求
Response response = call.execute();
System.out.println(response.body().string());
}
}
(二)运行结果
【演示】三、json上传文件
(一)代码
@Test
public void jsonTest() throws IOException {
//1.new 客户端对象 .var/ctrl+alt+v
OkHttpClient okHttpClient = new OkHttpClient();
//2.2请求体 ,演示提交json数据
RequestBody requestBody =
RequestBody.create("{\"a\":1,\"b\":2}", MediaType.parse("application/json"));
//2.new 提交post 请求Request
Request request = new Request.Builder()
//2.1 ctrl+e 打开最近的文件复制网址
.url("https://www.httpbin.org/post")
//post()提交的数据必须放在请求体中
.post(requestBody)
.build();
//3.newCall 接受请求
Call call = okHttpClient.newCall(request);
//4.call 发起请求 同步execute() 异步enqueue()
//在java里面,没有在Android中,不涉及必须在子线程中完成网络请求
Response response = call.execute();
System.out.println(response.body().string());
}
}