在应用开发过程中,我们进行Http通讯时会使用Cookie进行验证,今天我们就着重讲解Flutter 网络请求插件dio的cookie使用。
首先,我们要进行插件引用
# 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中如何使用呢文章来源:https://www.toymoban.com/news/detail-829558.html
/// 创建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模板网!