Flutter http 请求不接受 headers 但它适用于邮递员
Flutter http request not accepting headers but it works on postman
我的经历非常令人沮丧。我正在向 api 发出 post 请求,在 postman 上运行良好,但拒绝在 flutter 上运行。
这是错误响应,告诉我这是 headers 的问题。
{"message":"Missing/Incorrect Security Key Header","apiVersion":"v1","transactionRef":"N202204281825312267","data":null,"error":{"code":401,"message":"Authorization failed for this request!"}}
我的请求
static Future<dynamic> postRequest(String url) async {
http.Response response = await http.post(Uri.parse(url),
headers: <String, String>{
"Access-Key" : "6a637874-0394-4d9d-a803-86323c1ddc4d",
"Accept": "application/json",
"Content-Type" : 'application/json',
},
);
print(response.body);
print(url);
try {
if (response.statusCode == 200) {
String data = response.body;
var decodedData = jsonDecode(data);
return decodedData;
} else {
return response.body;
}
} catch (e) {
return response.body;
}
}
我想向您介绍 Flutter 中的另一个包,它可以更轻松地处理 http 请求,它叫做 Dio。一切都是一样的,它也默认删除了一些样板,你不必解析 url,你可以直接传递 url 字符串。您不必 encode/decode json。代替
在 http 中传递 headers 属性,dio 的工作方式如下,
将依赖项添加到 pubspec.yaml 文件并导入 dio.dart 文件。
说明可在此处找到https://pub.dev/packages/dio
这是一个例子:
Future fetchData () async {
Dio dio = new Dio();
String url = 'example.com';
final response = await dio.post(
url,
options: Options(
headers: {'Access-Key': 'key'},
);
print(response.data);
}
我的经历非常令人沮丧。我正在向 api 发出 post 请求,在 postman 上运行良好,但拒绝在 flutter 上运行。
这是错误响应,告诉我这是 headers 的问题。
{"message":"Missing/Incorrect Security Key Header","apiVersion":"v1","transactionRef":"N202204281825312267","data":null,"error":{"code":401,"message":"Authorization failed for this request!"}}
我的请求
static Future<dynamic> postRequest(String url) async {
http.Response response = await http.post(Uri.parse(url),
headers: <String, String>{
"Access-Key" : "6a637874-0394-4d9d-a803-86323c1ddc4d",
"Accept": "application/json",
"Content-Type" : 'application/json',
},
);
print(response.body);
print(url);
try {
if (response.statusCode == 200) {
String data = response.body;
var decodedData = jsonDecode(data);
return decodedData;
} else {
return response.body;
}
} catch (e) {
return response.body;
}
}
我想向您介绍 Flutter 中的另一个包,它可以更轻松地处理 http 请求,它叫做 Dio。一切都是一样的,它也默认删除了一些样板,你不必解析 url,你可以直接传递 url 字符串。您不必 encode/decode json。代替 在 http 中传递 headers 属性,dio 的工作方式如下,
将依赖项添加到 pubspec.yaml 文件并导入 dio.dart 文件。
说明可在此处找到https://pub.dev/packages/dio
这是一个例子:
Future fetchData () async {
Dio dio = new Dio();
String url = 'example.com';
final response = await dio.post(
url,
options: Options(
headers: {'Access-Key': 'key'},
);
print(response.data);
}