我想在正确处理cookie的同时向远程服务器发出http请求(例如,存储服务器发送的cookie,并在我发出后续请求时发送这些cookie).保留任何和所有cookie都很好
对于我正在使用的http请求
static Future<Map> postData(Map data) async { http.Response res = await http.post(url,body: data); // post api call Map data = JSON.decode(res.body); return data; }@H_404_14@
解决方法
这是一个如何获取会话cookie并在后续请求中返回它的示例.您可以轻松地调整它以返回多个cookie.创建一个Session类并通过它来路由所有GET和POST.
class Session { Map<String,String> headers = {}; Future<Map> get(String url) async { http.Response response = await http.get(url,headers: headers); updateCookie(response); return json.decode(response.body); } Future<Map> post(String url,dynamic data) async { http.Response response = await http.post(url,body: data,headers: headers); updateCookie(response); return json.decode(response.body); } void updateCookie(http.Response response) { String rawCookie = response.headers['set-cookie']; if (rawCookie != null) { int index = rawCookie.indexOf(';'); headers['cookie'] = (index == -1) ? rawCookie : rawCookie.substring(0,index); } } }@H_404_14@