一 概述

  • 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相关推荐

  1. Flutter开发之——网络请求-JsonToDart插件解析,AnyChat音视频互动开发平台

    在创建文件的位置,右键:New->JsonToDart 将Json结果填入文本框中,输入类名,点击Generate生成此类 三 旧类替换并显示 3.1 代码 Future futureArtic ...

  2. flutter网络请求dio的get、post、上传文件、下载文件总结

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. 重要消息 flutter中网络请求dio使用分析 视频教程在这里 Flutter 从入门实践到开发一个APP之UI基础 ...

  3. Flutter网络请求Dio使用

    import 'package:dio/dio.dart';//我的 class MyMy extends StatefulWidget {List<Widget> gedans = ne ...

  4. Flutter网络请求Dio库的使用及封装

    Dart语言内置的HttpClient实现了基本的网络请求相关的操作.但HttpClient本身功能较弱,很多网络请求常用功能都不支持,因此在实际项目中,我们更多是使用dio库实现网络请求. 注:Fl ...

  5. Flutter开发之HTTP网络请求:dio库(28)

    dio是Flutter中文网开源的一个强大的Dart Http请求库,支持Restful API.FormData.拦截器.请求取消.Cookie管理.文件上传/下载.超时等- 第三方库 dio实现g ...

  6. dio拦截器 flutter_详解flutter之网络请求dio,请求,拦截器简单示例

    flutter一直很火的网络请求插件dio 直接上代码,写成一个类,可以直接使用 包含请求的封装,拦截器的封装 import 'package:dio/dio.dart'; import 'dart: ...

  7. Flutter实战之网络请求框架Dio入门使用

    本篇博文涉及到的demo很简单,就是通过调用天气查询接口来显示城市的天气信息.通过本demo可以了解: 1.CityPicker的简单使用 2.Dio网络请求库的简单使用 3.Flutter对json ...

  8. 如何独立开发一个网络请求框架

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 目录:   前言 准备工作  开发模式 开发原则 线程 高并发 TCP/UDP 本类介绍  开发选择 功能列表 ...

  9. ios开发循环网络请求_谈谈 iOS 网络层设计(SSJNetWork封装缓冲,log日志,自动取消网络请求)...

    2.delegate效率高,delegate只是保存了一个对象指针3.在多个通信事件的时候,delegate显得直观也易维护. delegate缺点:1.因方法的声明和实现分离开来,代码的连贯性不是很 ...

最新文章

  1. BCH为什么没有黑客马拉松大赛?我们差钱吗?
  2. mysql表copy锁表吗_MySQL锁(二)表锁:为什么给小表加字段会导致整个库挂掉?...
  3. 一个简单的遮罩弹出层效果
  4. 月读の自动读取 根据注释解析列名和字典
  5. 人工智能:第六章 专家系统
  6. boost::regex
  7. jeecg标签属性exp 用法
  8. 雷军被重新任命为金山软件董事会副主席
  9. “头脑王者”爆红被封,微信小程序迎来蛮荒期
  10. linux php 中文乱码解决,Linux中文乱码如何解决
  11. Bootstrap响应式布局之 col-xs col-sm col-md
  12. css 六角形_创建数字六角形瓷砖图(第1部分)
  13. Android中文按拼音排序
  14. 技术分析是我的唯一信仰
  15. 苹果开发☀️ 一、Unity开发苹果应用流程
  16. 利用 Xposed 快速实现一个简易微信机器人
  17. linux小红帽如何封闭端口,安装红帽子Linux的几点注意
  18. docker run --device-write-bps doesn't effect
  19. AOP的5种advice
  20. 使用海龟编辑器用Python身高体重

热门文章

  1. 以太坊EVM兼容区块链全表
  2. 撸一个基于VUE的WEB管理后台(一)
  3. SAP中文语言包安装配置
  4. 三子棋——年轻人的第一款小游戏
  5. cass怎么把块打散命令_CAD中炸开命令是什么
  6. 导数求函数最大值和最小值
  7. 录制宏,理解编程的方法
  8. linux使用gaussian提交命令,使用Gaussian时的几个实用脚本和命令
  9. 网站开发进阶(二十九)HTML特殊转义字符
  10. 百度(baidu)、bing、sogo、360关键字 - 图片批量下载