Set timeout for HTTPClient get() request Set timeout for HTTPClient get() request dart dart

Set timeout for HTTPClient get() request


There are two different ways to configure this behavior in Dart

Set a per request timeout

You can set a timeout on any Future using the Future.timeout method. This will short-circuit after the given duration has elapsed by throwing a 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}

Set a timeout on HttpClient

You can also set a timeout on the HttpClient itself using HttpClient.connectionTimeout. This will apply to all requests made by the same client, after the timeout was set. When a request exceeds this timeout, a SocketException is thrown.

final client = new HttpClient();client.connectionTimeout = const Duration(seconds: 5);


You can use timeout

http.get(Uri.parse('url')).timeout(  Duration(seconds: 1),  onTimeout: () {    // Time has run out, do what you wanted to do.    return http.Response('Error', 500); // Replace 500 with your http code.  },);


There is no option to set timeout using Dart's http. However, as it returns Future, we can set timeout on the Future.

The example below sets timeout to 15 second. If it has been 15 seconds and no response received, it will throw TimeoutException

Future<dynamic> postAPICall(String url, Map param, BuildContext context) async {  try {    final response =  await http.post(url,        body: param).timeout(const Duration(seconds: 10),onTimeout : () {      throw TimeoutException('The connection has timed out, Please try again!');    });    print("Success");    return response;  } on SocketException {    print("You are not connected to internet");  }}