Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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
Api http.dart HttpException:在收到完整标头之前连接已关闭_Api_Http_Flutter_Dart - Fatal编程技术网

Api http.dart HttpException:在收到完整标头之前连接已关闭

Api http.dart HttpException:在收到完整标头之前连接已关闭,api,http,flutter,dart,Api,Http,Flutter,Dart,通过http.dart调用颤振上的post API时,我遇到以下错误: HttpException:连接在收到完整头之前关闭,uri= 为什么邮递员给出了正确的答复。我以前也见过有人问这个问题。 另外,我正在一个物理设备上调试:三星 这是密码 Future<Map> post( String path, { String token, dynamic body, bool parseResponse: false, isFormData: false, isUseBaseURL:

通过http.dart调用颤振上的post API时,我遇到以下错误:

HttpException:连接在收到完整头之前关闭,uri=

为什么邮递员给出了正确的答复。我以前也见过有人问这个问题。 另外,我正在一个物理设备上调试:三星

这是密码

  Future<Map> post(
String path, {
String token,
dynamic body,
bool parseResponse: false,
isFormData: false,
isUseBaseURL: false,
isEncoded: false,
  }) async {
Uri uri;
uri =
    isUseBaseURL ? Uri.parse('${Paths.baseUrl}/$path') : Uri.parse('$path');

print(uri.toString());
print(body.toString());

var request =
    await client.postUrl(uri).timeout(const Duration(seconds: 30));

if (token != null) {
  request.headers.add(HttpHeaders.authorizationHeader, 'Bearer $token');
} else {
  print('token is null');
  request.headers.add("X-Consumer-Custom-ID", "96");
}

if (body != null) {
  if (isFormData) {
    request
      ..headers.contentType = new ContentType(
          'application', 'x-www-form-urlencoded',
          charset: 'utf-8')
      ..write(body);
  } else {
    request
      ..headers.contentType = ContentType.json
      ..write(isEncoded ? body : json.encode(body));
  }
}
print(json.encode(body));
print('Sending data');
var response = await request.close();
print(response.statusCode);
Map responseMap = await _extractJson(response);
_checkAndThrowError(response, responseMap);
return responseMap;
未来职位(
字符串路径{
字符串标记,
动力体,
bool-parseResponse:false,
isFormData:false,
isUseBaseURL:false,
我承认:错,
})异步的{
Uri;
uri=
isUseBaseURL?Uri.parse('${Paths.baseUrl}/$path'):Uri.parse('$path');
打印(uri.toString());
打印(body.toString());
var请求=
等待client.postrl(uri).timeout(常量持续时间(秒:30));
if(令牌!=null){
request.headers.add(HttpHeaders.authorizationHeader,'Bearer$token');
}否则{
打印('标记为空');
添加(“X-Consumer-Custom-ID”,“96”);
}
if(body!=null){
if(isFormData){
要求
..headers.contentType=新的contentType(
“应用程序”,“x-www-form-urlencoded”,
字符集:“utf-8”)
…写(正文);
}否则{
要求
..headers.contentType=contentType.json
..写入(isEncoded?body:json.encode(body));
}
}
打印(json.encode(body));
打印(“发送数据”);
var response=wait request.close();
打印(响应状态码);
Map responseMap=await_extractJson(响应);
_CheckandRowError(响应、响应映射);
返回响应映射;

}

只要用htttp替换https就可以解决问题 .replaceAll('https','http')


来源:

你找到解决方案了吗?@Benjamin Smith没有,我只是将API移动到一个正在工作的模拟服务,这就解决了问题。问题是错误不足以分析问题。有人找到了解决方案吗?我的生产应用程序也面临着同样的问题。在我的例子中,调用的是使用Internet信息服务作为后端的https地址,在IIS网站的SSL设置中,我错误地设置了“客户端证书:接受”而不是“客户端证书:忽略”,设置“忽略”解决了问题。