• Flutter dio Http请求之Cookie管理


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

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

    1. # HTTP 请求
    2. dio: ^5.1.1
    3. cookie_jar: ^4.0.8
    4. dio_cookie_manager: ^3.0.0
    5. # 获取沙盒路径
    6. path_provider: ^2.1.1

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

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

    pub get

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

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

    代码如下:

    1. import 'dart:io';
    2. import 'package:cookie_jar/cookie_jar.dart';
    3. import 'package:path_provider/path_provider.dart';
    4. class CookieHandle {
    5. //改为使用 PersistCookieJar,在文档中有介绍,PersistCookieJar将 cookie保留在文件中,因此,如果应用程序退出,则cookie始终存在,除 非显式调用delete
    6. static PersistCookieJar? _cookieJar;
    7. /// cookie保存,url 为要储存cookie的某个url
    8. static Future<void> saveCookie(String url) async {
    9. Uri uri = Uri.parse(url);
    10. //获取cookies
    11. Future<List> cookies =
    12. (await CookieHandle.cookieJar).loadForRequest(uri);
    13. cookies.then((value) async {
    14. /// cookie的储存时存在沙盒路径下
    15. (await CookieHandle.cookieJar).saveFromResponse(uri, value);
    16. });
    17. }
    18. /// cookie获取
    19. static Future get cookieJar async {
    20. if (_cookieJar == null) {
    21. Directory appDocDir = await getApplicationDocumentsDirectory();
    22. _cookieJar = PersistCookieJar(storage: FileStorage(appDocDir.path));
    23. }
    24. return _cookieJar!;
    25. }
    26. /// cookie删除
    27. static Future<void> delete() async {
    28. (await CookieHandle.cookieJar).deleteAll();
    29. }
    30. }

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

    那我们在dio中如何使用呢

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

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

  • 相关阅读:
    如何将 Transformer 应用于时间序列模型
    一、Verilog基础语法学习
    Java 遍历指定路径下的所有文件和子文件夹
    浅谈中国程序员的四个层次,你在第几层?
    C++11 条件变量
    【linux编程】linux文件IO的系统函数及其示例(open/openat/lseek/write)
    设计模式之生产者/消费者模式
    Docker-概念及配置(超详细)
    FPGA原理与结构(0)——目录与传送门
    南京邮电大学电工电子(数电)实验报告——数字电路与模拟电路的综合应用
  • 原文地址:https://blog.csdn.net/WangQingLei0307/article/details/134528309