Flutter网络请求库DIO入门文档

print(result);
} else {
result =
‘Error getting IP address:\nHttp status ${response.statusCode}’;
}
} catch (exception) {
result = ‘Failed getting IP address’;
}
}
输出结果:122.70.159.214

二、dio

dio是一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时、自定义适配器等

1、安装

dependencies:

dio: ^3.0.10

2、常用请求

以下实验基于Charles的MapLocal,json文件内容为{“animal”:“dog”}

- get

Response response;
Dio dio = _dio();
response = await dio.get(“http://test?id=1&name=dio1&method=get”);

// 请求参数也可以通过对象传递,上面的代码等同于:
response = await dio.get(“http://test”, queryParameters: {“id”: 2, “name”: “dio2”});

print(response.data[‘animal’]);

- post

Response response;
Dio dio = _dio();
response = await dio.post(“http://test?id=1&name=dio1&method=post”);

// 请求参数也可以通过对象传递,上面的代码等同于:
response = await dio.post(“http://test”, queryParameters: {“id”: 2, “name”: “dio2”});

print(response.data[‘animal’]);

//监听接收数据进度
response = await dio.post(
“http://test”,
queryParameters: {“id”: 2, “name”: “dio2”},
onReceiveProgress: (int receive, int total) {
print(“$receive $total”);
},
);

- 发起多个请求

Dio dio = _dio();
Future.wait([dio.post(“http://test/test1”), dio.get(“http://test/test2”)]).then((e) {
print(e);
}).catchError((e) {});

结果为[{“animal”:“dog”}, {“animal”:“dog”}]

- 下载文件

Dio dio = _dio();
Response response =
await dio.download(“https://www.baidu.com/”, “assets/data/test.html”);

- 上传文件

Response response;
Dio dio = _dio();
FormData formData;
formData = FormData.fromMap({
“animal”: “dog”,
});
response = await dio.post(“http/test/upload”, data: formData);

//上传多个文件
formData = FormData.fromMap({
“animal”: “dog”,
“files”: [
await MultipartFile.fromFile(“assets/data/test1.json”, filename: “test1.json”),
await MultipartFile.fromFile(“assets/data/test2.json”, filename: “test2.json”),
]
});
response = await dio.post(“http/test/upload”, data: formData);

3、配置dio

Dio dio = Dio();
// 你可以使用默认配置或传递一个可选 BaseOptions参数来创建一个Dio实例 :
// 配置dio实例
dio.options.baseUrl = “https://www.xx.com/api”;
dio.options.connectTimeout = 5000; //5s
dio.options.receiveTimeout = 3000;

// 或者通过传递一个 options来创建dio实例
BaseOptions options = BaseOptions(
baseUrl: “https://www.xx.com/api”,
connectTimeout: 5000,
receiveTimeout: 3000,
);
dio = Dio(options);

4、请求配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值