网站建设页面设计规格,燕莎网站建设,网站建设系统网站自助建站系统,wordpress主题验证flutter开发实战-请求dio设置Cookie
在最近开发中碰到了需要websocket长链接收到响应的auth#xff0c;在之后的请求中需要将其设置为cookie中。 如Cookie:authDHSfQQSAXf89xZqJTLdEDVI2hwzc7p2lUmSNNdUSlgW2MyfQINpYr7jUbkX/; 设置cookie用到了dio_cookie_manager组件
一、…flutter开发实战-请求dio设置Cookie
在最近开发中碰到了需要websocket长链接收到响应的auth在之后的请求中需要将其设置为cookie中。 如Cookie:authDHSfQQSAXf89xZqJTLdEDVI2hwzc7p2lUmSNNdUSlgW2MyfQINpYr7jUbkX/; 设置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 cookiesprint(await cookieJar.loadForRequest(Uri.parse(https://dart.dev)));// Second request with the cookiesawait dio.get(https://dart.dev);
}
CookieManager拦截器可以帮助我们自动管理请求/响应Cookie。 如果需要持久保存cookie需要用到PersistCookieJar
dio.interceptors.add(CookieManager(PersistCookieJar()))
2.1 使用PersistCookieJar
PersistCookieJar将cooke持久化保存。
在flutter中传递给PersistCookieJar的路径必须有效存在于具有写访问权限的手机中。使用path_provider包可以获得正确的路径。
Futurevoid 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中
Futurevoid setSaveCookie({required String name,required String value,}) async {Cookie cookie Cookie(name, value);ListCookie cookies [cookie];//Save cookiesawait 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组件。
学习记录每天不停进步。