flutter开发实战-请求dio设置Cookie

这篇具有很好参考价值的文章主要介绍了flutter开发实战-请求dio设置Cookie。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

flutter开发实战-请求dio设置Cookie

在最近开发中碰到了需要websocket长链接收到响应的auth,在之后的请求中需要将其设置为cookie中。
如Cookie:auth=DHSfQQSAXf89xZqJTLdEDVI2hwzc7p2lUmSNNdUSlgW2MyfQIN+pYr7jUbkX/;
设置cookie用到了dio_cookie_manager组件

一、引入dio_cookie_manager

在pubspec.yaml引入dio_cookie_manager


dio_cookie_manager: ^2.0.0 # latest version

二、使用dio_cookie_manager

2.1 使用CookieJar


import 'package:cookie_jar/cookie_jar.dart';
import 'package:dio/dio.dart';
import 'package:dio_cookie_manager/dio_cookie_manager.dart';

void main() async {
  final dio = Dio();
  final cookieJar = CookieJar();
  dio.interceptors.add(CookieManager(cookieJar));
  // First request, and save cookies (CookieManager do it).
  await dio.get("https://dart.dev");
  // Print cookies
  print(await cookieJar.loadForRequest(Uri.parse("https://dart.dev")));
  // Second request with the cookies
  await dio.get('https://dart.dev');
}

CookieManager拦截器可以帮助我们自动管理请求/响应Cookie。
如果需要持久保存cookie,需要用到PersistCookieJar

dio.interceptors.add(CookieManager(PersistCookieJar()))


2.1 使用PersistCookieJar

PersistCookieJar将cooke持久化保存。

在flutter中,传递给PersistCookieJar的路径必须有效(存在于具有写访问权限的手机中)。使用path_provider包可以获得正确的路径。

Future<void> prepareJar() async {
  final Directory appDocDir = await getApplicationDocumentsDirectory();
  final String appDocPath = appDocDir.path;
  final jar = PersistCookieJar(
    ignoreExpires: true,
    storage: FileStorage(appDocPath + "/.cookies/"),
  );
  dio.interceptors.add(CookieManager(jar));
}
)

2.2 使用重定向请求处理Cookie

使用重定向请求处理Cookie重定向请求需要额外的配置才能正确解析cookie。需要将followRedirects设置为false。
允许Htto状态代码从300到399个预测为成功的响应。

使用HttpHeaders.locationHeader进行进一步请求。

final cookieJar = CookieJar();
final dio = Dio()
  ..interceptors.add(CookieManager(cookieJar))
  ..options.followRedirects = false
  ..options.validateStatus =
      (status) => status != null && status >= 200 && status < 400;
final redirected = await dio.get('/redirection');
final response = await dio.get(
  redirected.headers.value(HttpHeaders.locationHeader)!,
);

2.2 将获取到的Auth设置到cookie中

将从长链接中获取到的Auth设置到cookie中


 Future<void> setSaveCookie({
    required String name,
    required String value,
  }) async {
    Cookie cookie = Cookie(name, value);
    List<Cookie> cookies = [cookie];
    //Save cookies
    await jar.saveFromResponse(
        Uri.parse('https://ifour.cn'), cookies);
  }


调用setSaveCookie

	// 收到消息,将cookie写入dio中
        String auth = "auth";
        String authValue = "${messageDo.data?.auth}";
        await SDHttp.getInstance().setSaveCookie(name: auth, value: authValue);


三、小结

flutter开发实战-请求dio设置Cookie。设置cookie用到了dio_cookie_manager组件。

学习记录,每天不停进步。文章来源地址https://www.toymoban.com/news/detail-613476.html

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

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

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

相关文章

  • flutter dio 请求封装(空安全)

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

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

    2024年02月09日
    浏览(41)
  • php开发实战分析(2):cookie的动态使用(设置、获取、删除、猜你喜欢原理、购物车调用)

    在 PHP 中,cookie 是一种用于在客户端(浏览器)和服务器之间存储数据的一种机制。 它们通常用于跟踪和识别用户,并存储用户的偏好设置。下面是一些常见的用法和函数来操作 cookie。 可以使用 setcookie() 函数来设置 cookie。该函数有多个参数,其中最重要的是名称和值。下

    2024年02月15日
    浏览(60)
  • flutter开发实战-实现音效soundpool播放音频及控制播放暂停停止设置音量

    flutter开发实战-实现音效soundpool播放音频 最近开发过程中遇到低配置设备时候,在Media播放音频时候出现音轨限制问题。所以将部分音频采用音效sound来播放。 在iOS中使用sound来播放mp3音频示例如下 在iOS中通过soundID,可以控制播放与暂停,当然iOS中sound播放完成有通知回调c

    2024年02月14日
    浏览(50)
  • flutter开发实战-build apk名称及指令abiFilters常用gradle设置

    flutter开发实战-build apk名称及指令abiFilters常用gradle设置 最近通过打包flutter build apk lib/main.dart --release,发现apk命名规则需要在build.gradle设置。这里记录一下。 在android/app/build.gradle中需要设置 指令abiFilters 最后通过指令 打包处理的apk在build/app/outputs目录下 这里的版本name及版本

    2024年04月28日
    浏览(29)
  • Postman设置请求cookie

    使用postman发送请求,验证接口. 由于安全限制, 需要postman设置发送请求的cookie. 获取到 : aac-client-uid=cs-0954b451a6614c79a970f6e5d31779b7 使用postman验证请求…

    2024年02月11日
    浏览(70)
  • flutter开发实战-just_audio实现播放音频暂停音频设置音量等

    flutter开发实战-just_audio实现播放音频暂停音频设置音量等 最近开发过程中遇到需要播放背景音等音频播放,这里使用just_audio来实现播放音频暂停音频设置音量等 在pubspec.yaml引入just_audio 在iOS上,video_player使用的是AVPlayer进行播放。 在Android上,video_player使用的是ExoPlayer。 2.

    2024年02月13日
    浏览(48)
  • Flutter Dio 库的简单封装

    dio 库Flutter 中是比较流行的网络请求库。 其中在拦截器可以拦截请求,响应以及错误 权限验证:比如接口请求后端返回401未授权时可以跳到登录页,403跳到未授权页面; 异常监控:可以在拦截器处理异常,并且上报到异常监控后台或者发送异常预警消息; 缓存接口:可以对

    2024年02月11日
    浏览(54)
  • Flutter 使用 dio 遇到的问题合集

    泪流满面啊,,,,, 1. postHttpLogin-异常-----DioException [bad response]: The request returned an invalid status code of 500. 2. post请求失败 DioException [bad response]: The request returned an invalid status code of 415. 这个问题有些离谱,415,415都说是请求头的问题,但结果却不是

    2024年02月03日
    浏览(50)
  • Flutter之Dio封装+实例(自己梳理)

    https://github.com/cfug/dio/blob/main/dio/README-ZH.md  手动添加到pubspec.yaml: 在终端使用以下命令: dio 是一个强大的 HTTP 网络请求库,支持全局配置、Restful API、FormData、拦截器、 请求取消、Cookie 管理、文件上传/下载、超时、自定义适配器、转换器等。 单例模式详见:Flutter之单例模式

    2024年02月08日
    浏览(92)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包