Android网络请求 |(三)post请求的数据格式

目录

【讲解】一、单元测试 (Unit test)

(一)概述

(二) Android Java测试

【演示】二、multipart上传文件

准备

(一)代码

(二)运行结果 

【演示】三、json上传文件 

(一)代码

(二)运行结果


        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数据

【讲解】一、单元测试 (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());
    }
}

(二)运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值