Headers 未在 http Flutter 上设置
Headers not being set on http Flutter
我正在使用 Flutter 构建应用程序,在尝试利用我们的 api 访问数据库数据时,我收到错误 400,指出请求中未设置 headers。
我已经尝试了来自文档和其他人的问题的多种语法,但它似乎从来没有奏效。
测试代码段:
Future<String> getList() async {
String url = 'https://api.something/test';
Map<String, String> headers = {"Authorization": "Bearer $test"};
var res = await http.post(url, headers: headers);
print('Response status: ${res.statusCode}');
print('Response body: ${res.body}');
return 'Finished';
}
我试过使用所有这些,结果总是一样,没有设置 headers。
Map<String, String> headers = {"Authorization": "Bearer $test"};
var res = await http.post(url, headers: headers);
var res = await http.post(url, headers: {"Authorization": "Bearer $test"});
var res = await http.post(url, headers: {HttpHeaders.authorizationHeader: "Bearer $test"};
问题是,我是不是漏掉了什么?代码有什么问题吗?我认为这是一个 back-end 问题,但我们似乎无法修复它,所以我只是想确保这应该有效。
我也试图找到其他一些 api 来测试,但所有具有 headers 的都是 api 令牌,您需要为其创建帐户...对我可以调试的有什么建议吗?
只是把它放在这里,因为这个问题实际上有答案。
Richard Heap 留下的评论引导我解决了这个问题。感谢他,但我认为最好解决这个问题,这样以后遇到这个问题的人就不需要像我一样进行相同的搜索。
My bet is that your server is (incorrectly) expecting Authorization to begin with a capital. However, Dart will lower case it. Test sending authorization using, say, Postman to confirm. If so, look at pub.dev/packages/alt_http
这确实解决了这个问题。我对键 'Authorization' 而不是 'authorization' 没有问题,但值包含 'Bearer' 而不是 'bearer'。我用同样的方法验证了这一点:
邮递员呼叫与您的 Flutter 应用程序目前所做的完全相同 -> 将无法正常工作。
进行邮递员小写调用 -> 修复了问题。
我正在使用 Flutter 构建应用程序,在尝试利用我们的 api 访问数据库数据时,我收到错误 400,指出请求中未设置 headers。
我已经尝试了来自文档和其他人的问题的多种语法,但它似乎从来没有奏效。
测试代码段:
Future<String> getList() async {
String url = 'https://api.something/test';
Map<String, String> headers = {"Authorization": "Bearer $test"};
var res = await http.post(url, headers: headers);
print('Response status: ${res.statusCode}');
print('Response body: ${res.body}');
return 'Finished';
}
我试过使用所有这些,结果总是一样,没有设置 headers。
Map<String, String> headers = {"Authorization": "Bearer $test"};
var res = await http.post(url, headers: headers);
var res = await http.post(url, headers: {"Authorization": "Bearer $test"});
var res = await http.post(url, headers: {HttpHeaders.authorizationHeader: "Bearer $test"};
问题是,我是不是漏掉了什么?代码有什么问题吗?我认为这是一个 back-end 问题,但我们似乎无法修复它,所以我只是想确保这应该有效。
我也试图找到其他一些 api 来测试,但所有具有 headers 的都是 api 令牌,您需要为其创建帐户...对我可以调试的有什么建议吗?
只是把它放在这里,因为这个问题实际上有答案。 Richard Heap 留下的评论引导我解决了这个问题。感谢他,但我认为最好解决这个问题,这样以后遇到这个问题的人就不需要像我一样进行相同的搜索。
My bet is that your server is (incorrectly) expecting Authorization to begin with a capital. However, Dart will lower case it. Test sending authorization using, say, Postman to confirm. If so, look at pub.dev/packages/alt_http
这确实解决了这个问题。我对键 'Authorization' 而不是 'authorization' 没有问题,但值包含 'Bearer' 而不是 'bearer'。我用同样的方法验证了这一点:
邮递员呼叫与您的 Flutter 应用程序目前所做的完全相同 -> 将无法正常工作。
进行邮递员小写调用 -> 修复了问题。