Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
fluttertpc_get
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Jason Law
2021-08-06 04:09:02 +0200
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
1d2320173e1ceb26e35876809ff89ab283482b77
1d232017
1 parent
ebbb5551
Fixed timeout issue
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
23 additions
and
3 deletions
lib/get_connect/http/src/http.dart
lib/get_connect/http/src/http/html/http_request_html.dart
lib/get_connect/http/src/http/interface/request_base.dart
lib/get_connect/http/src/http/io/http_request_io.dart
lib/get_connect/http/src/http.dart
View file @
1d23201
...
...
@@ -205,6 +205,7 @@ class GetHttpClient {
if
(
authenticate
)
await
_modifier
.
authenticator
!(
request
);
final
newRequest
=
await
_modifier
.
modifyRequest
<
T
>(
request
);
_httpClient
.
timeout
=
timeout
;
var
response
=
await
_httpClient
.
send
<
T
>(
newRequest
);
final
newResponse
=
...
...
lib/get_connect/http/src/http/html/http_request_html.dart
View file @
1d23201
...
...
@@ -23,6 +23,9 @@ class HttpRequestImpl implements HttpRequestBase {
///on different sites. The default is false
final
bool
withCredentials
;
@override
Duration
?
timeout
;
/// Sends an HTTP request and asynchronously returns the response.
@override
Future
<
Response
<
T
>>
send
<
T
>(
Request
<
T
>
request
)
async
{
...
...
@@ -30,6 +33,7 @@ class HttpRequestImpl implements HttpRequestBase {
html
.
HttpRequest
xhr
;
xhr
=
html
.
HttpRequest
()
..
timeout
=
timeout
?.
inMilliseconds
..
open
(
request
.
method
,
'
${request.url}
'
,
async:
true
);
// check this
_xhrs
.
add
(
xhr
);
...
...
lib/get_connect/http/src/http/interface/request_base.dart
View file @
1d23201
...
...
@@ -8,4 +8,12 @@ abstract class HttpRequestBase {
/// Closes the [Request] and cleans up any resources associated with it.
void
close
();
/// Gets and sets the timeout.
///
/// For mobile, this value will be applied for both connection and request
/// timeout.
///
/// For web, this value will be the request timeout.
Duration
?
timeout
;
}
...
...
lib/get_connect/http/src/http/io/http_request_io.dart
View file @
1d23201
...
...
@@ -34,16 +34,20 @@ class HttpRequestImpl extends HttpRequestBase {
@override
Future
<
Response
<
T
>>
send
<
T
>(
Request
<
T
>
request
)
async
{
var
stream
=
request
.
bodyBytes
.
asBroadcastStream
();
io
.
HttpClientRequest
?
ioRequest
;
try
{
var
ioRequest
=
(
await
_httpClient
!.
openUrl
(
request
.
method
,
request
.
url
))
_httpClient
!.
connectionTimeout
=
timeout
;
ioRequest
=
(
await
_httpClient
!.
openUrl
(
request
.
method
,
request
.
url
))
..
followRedirects
=
request
.
followRedirects
..
persistentConnection
=
request
.
persistentConnection
..
maxRedirects
=
request
.
maxRedirects
..
contentLength
=
request
.
contentLength
??
-
1
;
request
.
headers
.
forEach
(
ioRequest
.
headers
.
set
);
var
response
=
await
stream
.
pipe
(
ioRequest
)
as
io
.
HttpClientResponse
;
var
response
=
timeout
==
null
?
await
stream
.
pipe
(
ioRequest
)
as
io
.
HttpClientResponse
:
await
stream
.
pipe
(
ioRequest
).
timeout
(
timeout
!)
as
io
.
HttpClientResponse
;
var
headers
=
<
String
,
String
>{};
response
.
headers
.
forEach
((
key
,
values
)
{
...
...
@@ -68,6 +72,9 @@ class HttpRequestImpl extends HttpRequestBase {
body:
body
,
bodyString:
stringBody
,
);
}
on
TimeoutException
catch
(
_
)
{
ioRequest
?.
abort
();
rethrow
;
}
on
io
.
HttpException
catch
(
error
)
{
throw
GetHttpException
(
error
.
message
,
error
.
uri
);
}
...
...
Please
register
or
login
to post a comment