gpt4 book ai didi

api - 为 HTTPClient get() 请求设置超时

转载 作者:IT老高 更新时间:2023-10-28 12:33:49 25 4
gpt4 key购买 nike

这个方法提交一个简单的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 应用或多或少会立即调用 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);

关于api - 为 HTTPClient get() 请求设置超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51487818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com