我正在制作一个应用程序在扑动,我需要发送一个cookie的头部访问我的web API。
然而,我没有任何成功。
这是我的代码。我怎样才能让一块飘动的饼干长久存在?import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:shared_preferences/shared_preferences.dart';
class XsrfToken {
static Future<String> getXsrf(String getJwt) async {
var url = 'https://www.myservice.com/api/v1/api.php';
var decode = json.decode(getJwt);
var header = {"Content-Type": "application/json"};
Map params = {"token": decode};
var _body = json.encode(params);
var response = await http.post(url, headers: header, body: _body);
print('Responde status ${response.statusCode}');
print('Responde body ${response.body}');
var xsrf = response.body;
var prefs = await SharedPreferences.getInstance();
prefs.setString("TokenXSRF", xsrf);
return xsrf;
}
}
为侦听器添加cookie。
var cookie1 = 'xyz';
var cookie2 = 'abc';
var headers = {
"Content-Type": "application/json",
'Cookie': 'myCookie1=$cookie1; mycookie2=$cookie2',
};
用于检索cookie
var cookiesData = response.headers['set-cookie'];
if (cookiesData != null) {
Map _cookies = _formatCookies(cookiesData);
// Do your logic
}
你将得到一个长字符串。
以下是我个人使用的 格式Map _formatCookies(String cookiesData) {
Map cookies = {};
if (cookiesData.contains('cookie1')) {
List at = RegExp(r'(cookie1)(.*?)[^;]+').stringMatch(cookiesData).split('=');
cookies['cookie1'] = at[1];
}
if (cookiesData.contains('cookie2')) {
List rt = RegExp(r'(cookie2)(.*?)[^;]+').stringMatch(cookiesData).split('=');
cookies['cookie2'] = rt[1];
}
return cookies;
}
String session = response.headers['set-cookie'].toString().split(";").first.split('=').last;