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 HttpException:在收到完整标头之前连接已关闭_Flutter_Dart - Fatal编程技术网

Flutter HttpException:在收到完整标头之前连接已关闭

Flutter HttpException:在收到完整标头之前连接已关闭,flutter,dart,Flutter,Dart,正如下面的代码所示,我正在试着打电话 Map<String, String> header = {"Content-Type": "application/json"}; Map<String, String> body = { "client_id": "xxxx", "client_secret": "XXXX", "password": "password", "username": "username", }; F

正如下面的代码所示,我正在试着打电话

  Map<String, String> header = {"Content-Type": "application/json"};
  Map<String, String> body = {
    "client_id": "xxxx",
    "client_secret": "XXXX",
    "password": "password",
    "username": "username",
  };

  Future<Post> callForFirstToken() async {
    final response = await http.post(url, headers: header, body: body);
    return response.statusCode == 200
      ? Post.fromJson(json.decode(response.body))
      : throw Exception('Failed to load ...');}

我不完全确定,但我以前在我的案例中看到过这一点。此错误可能与您发布的实际网络呼叫无关。您可以看到的ip地址
127.0.0.1
是调试期间使用的本地计算机的ip地址

这意味着无法使用设备进行调试。您可能需要重新启动并重新连接IDE和/或电话,然后打开任何VPN程序。对我来说,这很有效


您可能还希望将
response.body
设置为
Text
小部件,以检查实际的网络呼叫是否成功。

我想我也遇到了同样的问题,但我不确定如何解决。
我想这是在标题中添加的:
。标题[“Content Type”]=“application/json”
我已经将标题替换为下面的显示和工作方式

{"HttpHeaders.contentTypeHeader": "application/json"}
这可能是一个错误。
尝试使用
flatter run--启用软件渲染
而不是仅使用
run

问题是,连接已关闭,因为未收到来自服务器的相应响应。
这意味着在服务器代码的某个地方,由于异常或繁重的密集工作等原因,它会被卡住。您应该将服务器代码封装在try-catch中,并查看代码被卡住的原因。我的猜测是,您在post请求后忘记将数据发送回客户端,而您的客户端仍在等待该数据。

我正在使用emulator。正如你所说,我已经重新启动并关闭了我的窗口机器的VPN。实际上,这不会向application/json添加内容类型。相反,将使用HttpHeaders.contentTypeHeader值创建一个新头,该值为未知头,数据将不会作为JSON处理。
{"HttpHeaders.contentTypeHeader": "application/json"}