Flutter dio Http请求之Cookie管理

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

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

Dart 复制代码
# HTTP 请求
dio: ^5.1.1
cookie_jar: ^4.0.8
dio_cookie_manager: ^3.0.0

# 获取沙盒路径
path_provider: ^2.1.1

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

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

Dart 复制代码
pub get

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

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

代码如下:

Dart 复制代码
import 'dart:io';
import 'package:cookie_jar/cookie_jar.dart';
import 'package:path_provider/path_provider.dart';

class CookieHandle {
  //改为使用 PersistCookieJar,在文档中有介绍,PersistCookieJar将 cookie保留在文件中,因此,如果应用程序退出,则cookie始终存在,除             非显式调用delete
  static PersistCookieJar? _cookieJar;

  /// cookie保存,url 为要储存cookie的某个url
  static Future<void> saveCookie(String url) async {
    Uri uri = Uri.parse(url);
    //获取cookies
    Future<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中如何使用呢

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

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

相关推荐
向哆哆1 小时前
构建跨端健身俱乐部管理系统:Flutter × OpenHarmony 的数据结构与设计解析
数据结构·flutter·鸿蒙·openharmony·开源鸿蒙
不爱吃糖的程序媛2 小时前
Flutter版本选择指南:3.38.10 发布,Flutter-OH何去何从?
flutter
B2_Proxy2 小时前
IP 来源合规性,正在成为全球业务的隐性门槛
网络·爬虫·网络协议·安全
2601_949809592 小时前
flutter_for_openharmony家庭相册app实战+相册详情实现
javascript·flutter·ajax
灰灰勇闯IT2 小时前
Flutter for OpenHarmony:弹窗与对话框(Dialog)—— 构建清晰的上下文交互
flutter·交互
晚霞的不甘2 小时前
Flutter for OpenHarmony从零到一:构建《冰火人》双人合作闯关游戏
android·flutter·游戏·前端框架·全文检索·交互
2601_949833392 小时前
flutter_for_openharmony口腔护理app实战+饮食记录实现
android·javascript·flutter
jian110583 小时前
Android studio 调试flutter 运行自己的苹果手机上
flutter·智能手机·android studio
向哆哆3 小时前
高校四六级报名管理系统的考试信息模块实现:Flutter × OpenHarmony 跨端开发实践
flutter·开源·鸿蒙·openharmony·开源鸿蒙
jian110583 小时前
Android studio配置flutter,mac Android studio 发现苹果手机设备
android·flutter·android studio