dart – 设置HTTPClient get()请求的超时

dart – 设置HTTPClient get()请求的超时,第1张

概述此方法提交一个简单的HTTP请求并调用成功或错误回调就好了: void _getSimpleReply( String command, callback, errorCallback ) async { try { HttpClientRequest request = await _myClient.get( _serverIPAddress, _serverPort, 此方法提交一个简单的http请求并调用成功或错误回调就好了:

voID _getSimpleReply( String command,callback,errorCallback ) async {    try {      httpClIEntRequest request = await _myClIEnt.get( _serverIPAddress,_serverPort,'/' );      httpClIEntResponse response = await request.close();      response.transform( utf8.decoder ).Listen( (onData) { callback( onData ); } );    } on SocketException catch( e ) {      errorCallback( e.toString() );    }  }

如果服务器没有运行,AndroID-app或多或少会立即调用errorCallback.

在iOS上,errorCallback需要很长一段时间 – 超过20秒 – 直到调用任何回调.

我可以为httpClIEnt()设置一个等待服务器端返回回复的最大秒数 – 如果有的话?

解决方法 在Dart中有两种不同的方法来配置此行为

设置每个请求超时

您可以使用Future.timeout方法在任何Future上设置超时.通过抛出TimeoutException,在给定的持续时间过后,这将短路.

try {  final request = await clIEnt.get(...);  final response = await request.close()    .timeout(const Duration(seconds: 2));  // rest of the code  ...} on TimeoutException catch (_) {  // A timeout occurred.} on SocketException catch (_) {  // Other exception}

在httpClIEnt上设置超时

您还可以使用HttpClient.connectionTimeout在httpClIEnt本身上设置超时.这将适用于设置超时后由同一客户端发出的所有请求.当请求超过此超时时,将抛出SocketException.

final clIEnt = new httpClIEnt();clIEnt.connectionTimeout = const Duration(seconds: 5);
总结

以上是内存溢出为你收集整理的dart – 设置HTTPClient get()请求的超时全部内容,希望文章能够帮你解决dart – 设置HTTPClient get()请求的超时所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1000606.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存