File tree 2 files changed +42
-2
lines changed
2 files changed +42
-2
lines changed Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ Simple and powerful HTTP client for Flutter and Dart application.
9
9
import 'dart:io';
10
10
11
11
import 'package:http/http.dart' as http;
12
+ import 'package:http/retry.dart' as httpRetry;
12
13
import 'package:http_client_hoc081098/http_client_hoc081098.dart';
13
14
14
15
import 'user.dart';
@@ -23,11 +24,30 @@ void main() async {
23
24
),
24
25
);
25
26
27
+ final innerClient = httpRetry.RetryClient(
28
+ http.Client(),
29
+ retries: 3,
30
+ when: (response) {
31
+ print(
32
+ '[RetryClient] Checking response: request=${response.request} statusCode=${response.statusCode}');
33
+ print('-' * 128);
34
+ return response.statusCode == HttpStatus.unauthorized;
35
+ },
36
+ onRetry: (request, response, retryCount) async {
37
+ print(
38
+ '[RetryClient] Retrying request: request=$request, response=$response, retryCount=$retryCount');
39
+ // Simulate refreshing token
40
+ await Future<void>.delayed(const Duration(seconds: 1));
41
+ print('-' * 128);
42
+ },
43
+ );
44
+
26
45
final client = SimpleHttpClient(
27
- client: http.Client() ,
46
+ client: innerClient ,
28
47
timeout: const Duration(seconds: 10),
29
48
requestInterceptors: [
30
49
(request) async {
50
+ print('[requestInterceptors] request=$request');
31
51
await Future<void>.delayed(const Duration(milliseconds: 100));
32
52
33
53
final token = 'hoc081098';
Original file line number Diff line number Diff line change 1
1
import 'dart:io' ;
2
2
3
3
import 'package:http/http.dart' as http;
4
+ import 'package:http/retry.dart' as httpRetry;
4
5
import 'package:http_client_hoc081098/http_client_hoc081098.dart' ;
5
6
6
7
import 'user.dart' ;
@@ -15,11 +16,30 @@ void main() async {
15
16
),
16
17
);
17
18
19
+ final innerClient = httpRetry.RetryClient (
20
+ http.Client (),
21
+ retries: 3 ,
22
+ when : (response) {
23
+ print (
24
+ '[RetryClient] Checking response: request=${response .request } statusCode=${response .statusCode }' );
25
+ print ('-' * 128 );
26
+ return response.statusCode == HttpStatus .unauthorized;
27
+ },
28
+ onRetry: (request, response, retryCount) async {
29
+ print (
30
+ '[RetryClient] Retrying request: request=$request , response=$response , retryCount=$retryCount ' );
31
+ // Simulate refreshing token
32
+ await Future <void >.delayed (const Duration (seconds: 1 ));
33
+ print ('-' * 128 );
34
+ },
35
+ );
36
+
18
37
final client = SimpleHttpClient (
19
- client: http. Client () ,
38
+ client: innerClient ,
20
39
timeout: const Duration (seconds: 10 ),
21
40
requestInterceptors: [
22
41
(request) async {
42
+ print ('[requestInterceptors] request=$request ' );
23
43
await Future <void >.delayed (const Duration (milliseconds: 100 ));
24
44
25
45
final token = 'hoc081098' ;
You can’t perform that action at this time.
0 commit comments