未在http颤振上设置标头
我正在使用flatter构建一个应用程序,在尝试利用我们的api访问DB数据时,我收到一个错误400,表示请求中没有设置任何头 我试过从文档和其他人的问题中提取多种语法,但似乎从来都不起作用 用于测试的代码段:未在http颤振上设置标头,http,post,flutter,http-headers,authorization,Http,Post,Flutter,Http Headers,Authorization,我正在使用flatter构建一个应用程序,在尝试利用我们的api访问DB数据时,我收到一个错误400,表示请求中没有设置任何头 我试过从文档和其他人的问题中提取多种语法,但似乎从来都不起作用 用于测试的代码段: Future<String> getList() async { String url = 'https://api.something/test'; Map<String, String> headers = {"Authorization"
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';
}
问题是,我是否遗漏了什么?代码有什么问题吗?我认为这是一个后端问题,但我们似乎无法解决它,所以我只是想确保这应该是工作
我还试图找到一些其他的api进行测试,但所有有头的api都是针对您需要创建帐户的APIToken的。。。对我可以调试的问题有什么建议吗?把这个放在这里,因为这个问题确实有答案。 Richard Heap留下的评论让我找到了解决此问题的方法。他的功劳归他所有,但我认为最好解决这个问题,这样将来有这个问题的人就不需要像我一样进行同样的搜索了
我敢打赌,您的服务器(错误地)希望授权以大写字母开头。然而,Dart将降低它的大小写。测试发送授权,例如使用邮递员进行确认。如果是这样,请查看pub.dev/packages/alt_http 这确实解决了问题。我对密钥是'Authorization'而不是'Authorization'没有问题,但是对包含'Bearer'而不是'Bearer'的值没有问题。我用同样的方法验证了这一点: 打一个邮差电话,和你的Flitter应用程序现在做的完全一样->不起作用
进行邮递员小写呼叫->修复问题 我敢打赌,您的服务器(错误地)希望
授权
以大写字母开头。然而,Dart将降低它的大小写。测试发送authorization
,例如使用邮递员进行确认。如果是这样,看看你是对的!像你说的那样去找邮递员,同样的错误发生了,和我们的服务人员交谈,现在它工作了!谢谢你,伙计
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"};