当前位置: 首页 > news >正文

Flutter dio Http请求之Cookie管理

在应用开发过程中,我们进行Http通讯时会使用Cookie进行验证,今天我们就着重讲解Flutter 网络请求插件diocookie使用。

首先,我们要进行插件引用

# HTTP 请求
dio: ^5.1.1
cookie_jar: ^4.0.8
dio_cookie_manager: ^3.0.0# 获取沙盒路径
path_provider: ^2.1.1

这里为什么要使用path_provider这个插件呢,下面在cookie的储存时会做介绍。

引用完,我们执行以下命令

pub get

dio的使用网上有很多详细资料,这里就不做过多介绍,这里着重讲解一下Cookie的使用。

首先,我们创建一个Cookie管理类CookieHandle,具体实现方式和解释会在代码中进行详解。

代码如下:

import 'dart:io';
import 'package:cookie_jar/cookie_jar.dart';
import 'package:path_provider/path_provider.dart';class CookieHandle {//改为使用 PersistCookieJar,在文档中有介绍,PersistCookieJar将 cookie保留在文件中,因此,如果应用程序退出,则cookie始终存在,除             非显式调用deletestatic PersistCookieJar? _cookieJar;/// cookie保存,url 为要储存cookie的某个urlstatic Future<void> saveCookie(String url) async {Uri uri = Uri.parse(url);//获取cookiesFuture<List<Cookie>> cookies =(await CookieHandle.cookieJar).loadForRequest(uri);cookies.then((value) async {/// cookie的储存时存在沙盒路径下(await CookieHandle.cookieJar).saveFromResponse(uri, value);});}/// cookie获取static Future<PersistCookieJar> get cookieJar async {if (_cookieJar == null) {Directory appDocDir = await getApplicationDocumentsDirectory();_cookieJar = PersistCookieJar(storage: FileStorage(appDocDir.path));}return _cookieJar!;}/// cookie删除static Future<void> delete() async {(await CookieHandle.cookieJar).deleteAll();}
}

上述便是Cookie的保存、获取和删除。

那我们在dio中如何使用呢

/// 创建Dio网络请求对象
Dio dio = Dio(baseOptions);
/// 获取Cookie,CookieManager 为插件cookie管理类,CookieHandle.cookieJar 是获取Cookie
dio.interceptors.add(CookieManager(await CookieHandle.cookieJar));

到此我们就完成了Cookie的所有用法。

http://www.lryc.cn/news/238592.html

相关文章:

  • 计算机网络的标准化工作及相关组织
  • 智能座舱架构与芯片- (11) 软件篇 上
  • 2021秋招-算法-递归
  • 【Django-02】 Model模型和模型描述对象Meta
  • 【华为OD题库-030】阿里巴巴找黄金宝箱(V)-java
  • centos7卸载mongodb数据重新安装时无法安装的问题
  • ES6 的 class 类和Typescript 的 class 类的区别
  • Android 12.0 默认授予应用权限
  • Google Earth Engine(GEE)——多源遥感变量筛选(PCA主成分分析),变量筛选/降维处理
  • 爬虫的http和https基础
  • 读像火箭科学家一样思考笔记05_思想实验
  • mac gitee新建工程遇到的一些问题
  • 某60区块链安全之Call函数簇滥用实战一学习记录
  • 最新AIGC创作系统ChatGPT系统源码,支持最新GPT-4-Turbo模型,支持DALL-E3文生图,图片对话理解功能
  • openssl+ SM2 + linux 签名开发实例(C++)
  • U4_1:图论之DFS/BFS/TS/Scc
  • STM32框架之按键扫描新思路
  • 完美解决k8s master节点无法ping node节点中的IP或Service NodePort的IP
  • 弗洛伊德算法(C++)
  • 相对定位、绝对定位、固定定位、绝对定位堆叠顺序
  • px4+vio实现无人机室内定位
  • 享元模式 rust和java的实现
  • XmlElement注解在Java的数组属性上,以产生多个相同的XML元素
  • SQLServer 数字加千分位 用FORMAT函数强转不管多大位数
  • 说说mvc和mvvm的区别和联系
  • linux rsyslog综合实战2
  • AcWing 4. 多重背包问题 I 学习笔记
  • 解决selenium使用chrome下载文件(如pdf)时,反而打开浏览器的预览界面
  • 2024年山东省职业院校技能大赛中职组“网络安全”赛项竞赛试题-C
  • 基于Python实现用于实时监控和分析 MySQL 服务器的性能指标和相关信息工具源码