Flutter dio Http请求之Cookie管理

这篇具有很好参考价值的文章主要介绍了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始终存在,除             非显式调用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中如何使用呢

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

到此我们就完成了Cookie的所有用法。文章来源地址https://www.toymoban.com/news/detail-829558.html

到了这里,关于Flutter dio Http请求之Cookie管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Flutter】Dio 强大的Dart/Flutter HTTP客户端

    Dio是一个强大的Dart/Flutter HTTP客户端,支持全局配置、拦截器、FormData、请求取消、文件上传/下载、超时等功能。 首先,

    2024年02月11日
    浏览(35)
  • Flutter网络请求框架Dio源码分析以及封装(一)--请求流程分析

    利用flutter开发app也已经有些时间了,这个过程中最多接触到的就是网络请求相关的代码。自己目前项目中使用的是现在市面上最流行的网络请求库-dio,相对于flutter自带的HttpClient来说,dio使用起来更简单,功能更强大,支持全局配置、Restful API、FormData、拦截器、 请求取消、

    2024年02月09日
    浏览(31)
  • flutter3使用dio库发送FormData数据格式时候的坑,和get库冲突解决办法

    问题1:当你使用 FormData.from(Flutter3直接不能用) 的时候,可能会提示没有这个方法,或者使用 FormData.fromMap(flutter3的dio支持) 的时候也提示没有,这时候可能就是和get库里面的Formdata冲突了 问题1:The method \\\'fromMap\\\' isn\\\'t defined for the type \\\'FormData\\\'. (Documentation)  Try correcting the name to

    2024年01月19日
    浏览(32)
  • postman:模拟发送一个需要 cookie 认证的请求

    目录 前言: 1、chrome 已安装插件 intercept。 2、chrome 浏览器要设置打开,在运行期间浏览器要一直打开。

    2024年02月16日
    浏览(28)
  • golang发送get请求的各种操作:自定义header请求头、带cookie请求、channel并发请求

    请求参数放到url.Values{} 接收文件–ioutil.WriteFile 接收文件–io.Copy

    2024年02月06日
    浏览(30)
  • 【P6】JMeter HTTP Cookie管理器(HTTP Cookie Manager)

    如果你有一个 HTTP 请求,其返回结果里包含一个 cookie,那么 Cookie 管理器会自动将该 cookie 保存起来,而且以后所有的对该网站的请求都使用同一个 cookie 右键 添加 配置元件 HTTP Cookie管理器 选项(Options) (1)、每次反复清除Cookies?(Clear cookies each iteration?):每次迭代时

    2024年02月12日
    浏览(28)
  • C# 获取Http请求服务器响应的cookie

    一、C#服务器端响应存储cookie   二、C#发送Http请求,获取响应cookie 使用: CookieContainer  打印结果:   更多:

    2024年02月02日
    浏览(35)
  • HTTP请求中token、cookie、session有什么区别

     cookie HTTP 无状态的,每次请求都要携带 cookie ,以帮助识别身份 服务端也可以向客户端 set-cookie , cookie 大小 4kb 默认有跨域限制:不可跨域共享,不可跨域传递 cookie (可通过设置 withCredential 跨域传递 cookie ) cookie本地存储 HTML5 之前 cookie 常被用于本地存储 HTML5 之后推荐使用

    2024年02月08日
    浏览(30)
  • 异常排查 | 重复Cookie访问导致HTTP请求引发空指针异常

    近几日,遇到一个困惑了我很久的异常,是浏览器页面向Tomcat服务器发起HTTP请求时,服务器发还回来的一处异常 首先来说一下我是在做什么的过程中遇到这个问题 现在我需要实现一个监听器,去监听在线用户人数,也去 实时记录一下当前这个页面中有多少用户在线 ,这一

    2024年02月08日
    浏览(34)
  • http 请求报文响应报文的格式以及Token cookie session 区别

    HTTP 请求报文和响应报文的格式如下: HTTP 请求报文格式: 方法 : 请求方法,例如 GET、POST、PUT、DELETE 等。 路径 : 请求的路径,表示需要访问的资源。 协议版本 : 使用的协议版本,通常是 HTTP/1.1 或 HTTP/2。 请求头部字段:包含了关于请求的附加信息,每个字段由字段名和对

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包