Flutterdart http库ClientException

时间:2018-09-26 10:11:04

标签: android dart flutter

我正在使用 HTTP dart包来进行类似的发布请求,但是有时当网络失败时,会从 IOClient 抛出 ClientException 上课,但是在catch区和应用程序崩溃时我什么都没得到。

http.post(url, headers: headers, body: body).then((response) {
  //response parsing
}).catchError((error) {
 //ClientException is never catched in this block.
});

2 个答案:

答案 0 :(得分:0)

package:http/src/io_client.dart中所述:

  

任何内部HTTP错误都应包装为[ClientException]。

docs中所述,这是以下情况的清楚案例:

  

潜在问题:意外混合同步和异步错误

要解决此问题,您需要将代码包装在Future.sync()中。

  

Future.sync()使您的代码对未捕获的异常具有弹性。如果您的函数中包含许多代码,则很可能您可能在做一些危险的事情而没有意识到:

return new Future.sync(() {
  http.post(url, headers: headers, body: body).then((response) {});
});
  

Future.sync()不仅允许您处理可能会发生的错误,而且还可以防止错误意外泄漏出函数。

答案 1 :(得分:0)

在我的情况下,调用是使用 Microsoft Internet Information Services 作为后端的 https 地址,在 IIS 网站的 SSL 设置中,我错误地设置了“客户端证书:接受”而不是“客户端证书:忽略”,设置“忽略”解决了问题。