题记

—— 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天。

重要消息

1 引言

dio用来在flutter跨平台开发中访问网络的框架,在使用的时候,我们首先是引入依赖

dependencies:

dio: 3.0.9

也可以访问国内pub仓库来查看 dio的最新版本。

一般添加依赖如下所示

dependencies:

dio: ^3.0.9

2.1 dio post 请求提交 FormData 表单数据

2.1 Dio post 请求提交 FormData 表单数据FormData 将提交的参数 name与value进行组合,实现表单数据的序列化,从而减少表单元素的拼接

也可以这样来描述:FormData 接口提供了一种表示表单数据的键值对的构造方式,通过FormData发出的请求编码类型被设为 “multipart/form-data”,而在网络请求访问中,通过 Content-Type 来记录这个值,可以理解为Content-Type 表示具体请求中的媒体类型信息。

而我们在实际开发中常用的 Content-Type如下

multipart/form-data

application/json JSON数据格式

application/x-www-form-urlencoded 表单数据格式

下面我们将使用 dio 来发起一个post请求,提交参数的格式为 FromData

void postRequestFunction() async {

///创建Dio

Dio dio = new Dio();

///发送 FormData:

FormData formData = FormData.fromMap({"name": "张三", "age": 22});

String url ="http://192.168.200.68:8080/registerUser";

///发起 post 请求 如这里的注册用户信息

Response response = await dio

.post(url, data: formData);

result = response.data.toString();

setState(() {});

}

抓包所得如下

我们也可以看到参数的格式

在这里我们可以看到 Content-type 是 text/plain 而并不是我们上面所说的 multipart/form-data ,这是因为在通过Dio 的 FormData 封装参数时,会进行一步默认的设置如下图所示

2.2 Dio post 请求提交 json 数据

下面我们使用 dio 发起一个post请求,提交json格式的参数

///post请求发送json

void postRequestFunction2() async{

String url = "http://192.168.0.102:8080/registerUser2";

///创建Dio

Dio dio = new Dio();

///创建Map 封装参数

Map map = Map();

map['userName']="小明";

map['userAge']=44;

///发起post请求

Response response = await dio.post(url,data: map);

var data = response.data;

}

抓包所得如下

从上图中,我们可以看到 Content-Type 标识了传参方式是以 json 格式来发送的,下图中我们可以看到具体的参数

完毕

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐