Flutter开发之——网络请求-Dio
一 概述
- Dio是一个强大的Dart/Flutter http请求库
- Dio支持Restful API、formData、拦截器、请求取消、Cookie管理、文件上传/下载、超时、自定义适配器等
二 Dio
2.1 地址信息
- GitHub地址:https://github.com/flutterchina/dio
- pub地址:https://pub.flutter-io.cn/packages/dio
2.2 添加/删除软件包
打开CMD终端,执行如下指令(自动添加pubspec.yaml依赖)
Dart项目:
dart pub add dio
Flutter项目:
flutter pub add dio
插件卸载
Dart项目:
dart pub remove dio
Flutter项目:
flutter pub remove dio
执行命令
flutter pub get
三 基础使用
3.1 get请求
var dio = Dio();var response = await dio.get('https://xxx.com/test?id=12&name=wendu');print(response.data.toString());response = await dio.get('https://xxx.com/test', queryParameters: {'id': 12, 'name': 'wendu'});print(response.data.toString());
3.2 post请求
var dio = Dio();var response = await dio.post('https://xxx.com/test', data: {'id': 12, 'name': 'wendu'});
3.3 并发请求
var dio = Dio();var response = await Future.wait([dio.post('https://xxx.com/info'), dio.get('https://xxx.com/token')]);
3.4 下载文件
var dio = Dio();var response = await dio.download('https://www.xxx.com/', '/savePath');
3.5 发送 FormData
var dio = Dio();var formData = FormData.fromMap({'name': 'wendux','age': 25,});var response = await dio.post('https://www.xxx.com/info', data: formData);
3.6 通过FormData上传多个文件
var dio = Dio();var formData = FormData.fromMap({'name': 'wendux','age': 25,'file': await MultipartFile.fromFile('./text.txt', filename: 'upload.txt'),'files': [await MultipartFile.fromFile('./text1.txt', filename: 'text1.txt'),await MultipartFile.fromFile('./text2.txt', filename: 'text2.txt'),]});var response = await dio.post('https://www.xxx.com/info', data: formData);
3.7 监听发送(上传)数据进度
var dio = Dio();var response = await dio.post('http://www.dtworkroom.com/doris/1/2.0.0/test',data: {'aa': 'bb' * 22},onSendProgress: (int sent, int total) {print('$sent $total');},);
四 示例
4.1 BaseOptions配置请求
配置BaseOptions
var dio = Dio(BaseOptions(baseUrl: 'https://www.wanandroid.com/',connectTimeout: 5000,receiveTimeout: 100000,headers: {HttpHeaders.userAgentHeader: 'dio','api': '1.0.0',},contentType: Headers.jsonContentType,responseType: ResponseType.plain,));
get请求
Response response;
response = await dio.get('/article/list/0/json');
print(response.data);
带options的get请求
var responseMap = await dio.get('/article/list/0/json',// Transform response data to Json Mapoptions: Options(responseType: ResponseType.json),);
print(responseMap.data);
带参数的post请求
Response responseresponse = await dio.post('//user/login',data: {'username': 'wanandroidUser1','password': '123456'},// Send data with "application/x-www-form-urlencoded" formatoptions: Options(contentType: Headers.formUrlEncodedContentType,),);print(response.data);
fetch请求
Response response;response = await dio.fetch(RequestOptions(path: 'https://www.wanandroid.com/article/list/0/json'),);print(response.data);
4.2 拦截器
var dio = Dio(BaseOptions(baseUrl: 'https://www.wanandroid.com/',connectTimeout: 5000,receiveTimeout: 100000,headers: {HttpHeaders.userAgentHeader: 'dio','api': '1.0.0',},contentType: Headers.jsonContentType,responseType: ResponseType.plain,));Response response;dio.interceptors.add(InterceptorsWrapper(onRequest: (options, handler) {return handler.next(options);},onResponse: (response, handler) {return handler.next(response);},onError: (DioError e, handler) {}));response = await dio.post('/user/login',data: {'username': 'wanandroidUser1', 'password': '123456'},// Send data with "application/x-www-form-urlencoded" formatoptions: Options(contentType: Headers.formUrlEncodedContentType,),);print(response.data);
}
Flutter开发之——网络请求-Dio相关推荐
- Flutter开发之——网络请求-JsonToDart插件解析,AnyChat音视频互动开发平台
在创建文件的位置,右键:New->JsonToDart 将Json结果填入文本框中,输入类名,点击Generate生成此类 三 旧类替换并显示 3.1 代码 Future futureArtic ...
- flutter网络请求dio的get、post、上传文件、下载文件总结
题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. 重要消息 flutter中网络请求dio使用分析 视频教程在这里 Flutter 从入门实践到开发一个APP之UI基础 ...
- Flutter网络请求Dio使用
import 'package:dio/dio.dart';//我的 class MyMy extends StatefulWidget {List<Widget> gedans = ne ...
- Flutter网络请求Dio库的使用及封装
Dart语言内置的HttpClient实现了基本的网络请求相关的操作.但HttpClient本身功能较弱,很多网络请求常用功能都不支持,因此在实际项目中,我们更多是使用dio库实现网络请求. 注:Fl ...
- Flutter开发之HTTP网络请求:dio库(28)
dio是Flutter中文网开源的一个强大的Dart Http请求库,支持Restful API.FormData.拦截器.请求取消.Cookie管理.文件上传/下载.超时等- 第三方库 dio实现g ...
- dio拦截器 flutter_详解flutter之网络请求dio,请求,拦截器简单示例
flutter一直很火的网络请求插件dio 直接上代码,写成一个类,可以直接使用 包含请求的封装,拦截器的封装 import 'package:dio/dio.dart'; import 'dart: ...
- Flutter实战之网络请求框架Dio入门使用
本篇博文涉及到的demo很简单,就是通过调用天气查询接口来显示城市的天气信息.通过本demo可以了解: 1.CityPicker的简单使用 2.Dio网络请求库的简单使用 3.Flutter对json ...
- 如何独立开发一个网络请求框架
(原创出处为本博客:http://www.cnblogs.com/linguanh/) 目录: 前言 准备工作 开发模式 开发原则 线程 高并发 TCP/UDP 本类介绍 开发选择 功能列表 ...
- ios开发循环网络请求_谈谈 iOS 网络层设计(SSJNetWork封装缓冲,log日志,自动取消网络请求)...
2.delegate效率高,delegate只是保存了一个对象指针3.在多个通信事件的时候,delegate显得直观也易维护. delegate缺点:1.因方法的声明和实现分离开来,代码的连贯性不是很 ...
最新文章
- BCH为什么没有黑客马拉松大赛?我们差钱吗?
- mysql表copy锁表吗_MySQL锁(二)表锁:为什么给小表加字段会导致整个库挂掉?...
- 一个简单的遮罩弹出层效果
- 月读の自动读取 根据注释解析列名和字典
- 人工智能:第六章 专家系统
- boost::regex
- jeecg标签属性exp 用法
- 雷军被重新任命为金山软件董事会副主席
- “头脑王者”爆红被封,微信小程序迎来蛮荒期
- linux php 中文乱码解决,Linux中文乱码如何解决
- Bootstrap响应式布局之 col-xs col-sm col-md
- css 六角形_创建数字六角形瓷砖图(第1部分)
- Android中文按拼音排序
- 技术分析是我的唯一信仰
- 苹果开发☀️ 一、Unity开发苹果应用流程
- 利用 Xposed 快速实现一个简易微信机器人
- linux小红帽如何封闭端口,安装红帽子Linux的几点注意
- docker run --device-write-bps doesn't effect
- AOP的5种advice
- 使用海龟编辑器用Python身高体重