Flutter进行HTTP请求并保存登陆状态(dio) |
您所在的位置:网站首页 › dio承情头 › Flutter进行HTTP请求并保存登陆状态(dio) |
hello, I'm Shendi
记录一下
文章目录
引入库使用指定超时时间设置请求头保留登录凭证(Session)响应
引入库
使用到了 dio 于是要在 pubspec.yaml 中引入 dependencies: # 我这里使用的版本是 4.0.1,可根据自己需求选择 dio: ^4.0.1在需要使用的地方导入 import 'package:dio/dio.dart'; 使用dio的github: https://github.com/flutterchina/dio 官方简单的案例 import 'package:dio/dio.dart'; void getHttp() async { try { var response = await Dio().get('http://www.google.com'); print(response); } catch (e) { print(e); } } 所有 http 操作都需要在 async 修饰的函数内执行(异步) // 首先可以定义一个 dio 对象 var dio = Dio(); // 取消重定向 dio.options.followRedirects = false; // 当响应状态不为200时,会拿不到响应数据,于是要先进行设置 dio.options.validateStatus = (status) { return status! "参数1":"值", "参数2", "值"}); // 或 var data = FormData.fromMap({ "参数1": "值", "参数2": "值", }); resp = await dio.post("url", data: data); } 指定超时时间一般都需要设置请求的超时时间 // 其中seconds是秒 await dio.post("").timeout(const Duration(seconds: 3)) 设置请求头 var dio = Dio(); dio.options.headers["请求头键名称"] = "值";更多请求设置可以直接看文档 https://github.com/flutterchina/dio#request-options 保留登录凭证(Session)当使用到了 Session ,例如登录后才可执行其他操作,则需要手动设置 session Session 在 http 请求的 cookie 中,根据不同服务器, Session的名称不同,例如Tomcat的为 (JSESSIONID) 一般首先需要登录,当我们第一次请求服务器时,此时没有session则,响应头会携带 set-cookie,set-cookie中的内容需要保存下来,在下次请求的时候带上此Cookie则可以保存状态了 例如请求登录接口 var cookie; var dio = Dio(); login() async { dio.options.followRedirects = false; dio.options.validateStatus = (status) { return status! /// Response body. may have been transformed, please refer to [ResponseType]. // 响应数据 T? data; /// Response headers. 响应头 Headers headers; /// The corresponding request info. Options request; /// Http status code. 响应状态码 int? statusCode; String? statusMessage; /// Whether redirect bool? isRedirect; /// redirect info List redirects ; /// Returns the final real request uri (maybe redirect). Uri realUri; /// Custom field that you can retrieve it later in `then`. Map extra; } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |