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

时间:2019-06-11 13:11:26

标签: flutter dart

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

  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 ...');}

但是,我遇到了这个错误:

Error connecting to the service protocol: HttpException: Connection closed before full header was received, uri = http://127.0.0.1:60556/sK_cPlYMcGQ=/ws

5 个答案:

答案 0 :(得分:0)

我不太确定,但就我而言,我以前已经看过。此错误可能与您发布的实际网络呼叫无关。您可以看到127.0.0.1的IP地址是调试期间正在使用的本地计算机之一。

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

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

答案 1 :(得分:0)

我认为我遇到了同样的问题,但是我不确定如何解决。 我认为是将其添加到标题中:<div class="outer"> <div>text1</div> <div>text2</div> <div>text3</div> <div>text4</div> <div>text5</div> <div>text6</div> <div>text7</div> <div>text8</div> <div>text9</div> <div>text10</div> </div>

答案 2 :(得分:0)

我已将标题替换为下面的显示和工作方式

{"HttpHeaders.contentTypeHeader": "application/json"}

答案 3 :(得分:0)

这可能是https://github.com/omnigroup/Apache/blob/master/httpd/modules/filters/mod_ext_filter.c。 尝试使用flutter run --enable-software-rendering而非仅使用run

答案 4 :(得分:0)

问题是告诉您连接已关闭,因为未收到来自服务器的适当响应。 这意味着在服务器代码中的某处,由于异常而被卡住,或者由于繁重的工作而被卡住,等等。您应该将服务器代码封装在try-catch中,并查看为什么卡住了代码。我的猜测是,您忘记了发布请求后将数据发送回客户端,而您的客户端仍在等待该数据。