文件上传:
@Test
public void upLoadTest() {
OkHttpClient okHttpClient = new OkHttpClient();
File file1 = new File("D:\\desktop\\1.txt");
File file2 = new File("D:\\desktop\\2.txt");
MultipartBody multipartBody = new MultipartBody.Builder()
.addFormDataPart("file1", file1.getName(), RequestBody.create(file1, MediaType.parse("text/plain")))
.addFormDataPart("file2", file2.getName(), RequestBody.create(file1, MediaType.parse("text/plain")))
.addFormDataPart("a", "1")
.build();
Request request = new Request.Builder().url("https://www.httpbin.org/post").post(multipartBody).build();
Call call = okHttpClient.newCall(request);
try {
Response response = call.execute();
System.out.println(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
对于多个数据,可以用MultipartBody 存储并传输。
addFormDataPart传文件时需要数据名、需要传输的文件名以及对应的RequestBody。
剩下和之前的一样,用post发出请求即可。
json上传:
@Test
public void jsonTest() {
OkHttpClient okHttpClient = new OkHttpClient();
RequestBody requestBody = RequestBody.create("{\"a\":1, \"b\":2}", MediaType.parse("applicaition/json\n"));
Request request = new Request.Builder().url("https://www.httpbin.org/post").post(requestBody).build();
Call call = okHttpClient.newCall(request);
try {
Response response = call.execute();
System.out.println(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
这个是为了突出单数据可以只用一个requestBody 即可。
requestBody 创建需要数据和规定该数据类型的一个MediaType。