Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter flatter http_auth头包含;“承运人退货”;及;新行“;字符(\r\n)_Flutter_Http Headers_Flutter Dependencies - Fatal编程技术网

Flutter flatter http_auth头包含;“承运人退货”;及;新行“;字符(\r\n)

Flutter flatter http_auth头包含;“承运人退货”;及;新行“;字符(\r\n),flutter,http-headers,flutter-dependencies,Flutter,Http Headers,Flutter Dependencies,我目前正在试验颤振,并尝试使用http包。当我请求一个需要授权头(authorization:Basic)的资源时,我创建请求如下: import 'package:http/http.dart' as http; void request() { http.get('http://<my_url>', headers: {'Authorization': 'Basic <hash>'}).then( (resp) { print('respons

我目前正在试验颤振,并尝试使用http包。当我请求一个需要授权头(authorization:Basic)的资源时,我创建请求如下:

import 'package:http/http.dart' as http;

void request() {
    http.get('http://<my_url>', headers: {'Authorization': 'Basic <hash>'}).then( (resp) {
       print('response status: ${resp.statusCode} ${resp.reasonPhrase}');
    }
}
import'package:http/http.dart'作为http;
无效请求(){
get('http://',头:{'Authorization':'Basic'}){
打印('response status:${resp.statusCode}${resp.reasonPhrase}');
}
}
在执行此请求时,我正在观察通过Wireshark发送的请求,并注意到它在末尾包含载波返回(\r)和新行(\n)字符:

调用我的请求函数后,我在print语句中得到一条401未经授权的消息。当我在Postman中调用相同的请求时,一切正常

我假设我的身份验证失败,因为每个头条目末尾都有这些字符(\r\n)。有人能帮我吗?或者我做错了什么

注:我也尝试过http_auth包,但也失败了

import 'package:http_auth/http_auth.dart' as http_auth;

void request(String user, String password) {
    http_auth.BasicAuthClient(user, password).get('http://<my_url>', headers: {'Authorization': 'Basic <hash>'}).then( (resp) {
       print('response status: ${resp.statusCode} ${resp.reasonPhrase}');
    }
}
import'包:http\u auth/http\u auth.dart'作为http\u auth;
无效请求(字符串用户、字符串密码){
http_auth.BasicAuthClient(用户,密码).get('http://',头:{'Authorization':'Basic'})。然后((resp){
打印('response status:${resp.statusCode}${resp.reasonPhrase}');
}
}

那些
\r\n
字符就在那里。它们是标题之间的行分隔符。如果您从
curl--user foo:bar www.dart.dev
包捕获有线字节,您将看到完全相同的情况

您会注意到,Dart将头名称的大小写降低到
authorization
,因为根据RFC,这是完全有效的。但是,这有时会发现一些服务器(错误地)区分大小写处理头名称


请使用
授权再次尝试您的邮递员(或带有手动创建的小写标题的curl)。如果服务器不接受,请与服务器维护人员联系。

谢谢您的快速回答。您是对的。服务器实际上不接受小写“授权”。我将尝试对此进行调试。谢谢^^