send method
Sends an HTTP request and asynchronously returns the response.
Implementers should call BaseRequest.finalize
to get the body of the
request as a ByteStream
. They shouldn't make any assumptions about the
state of the stream; it could have data written to it asynchronously at a
later point, or it could already be closed when it's returned. Any
internal HTTP errors should be wrapped as ClientException
s.
Implementation
@override
Future<http.StreamedResponse> send(http.BaseRequest request) async {
print('--> ${request.method} ${request.url}');
print(request.headers);
print((request as http.Request).body);
var response = await _client.send(request);
print(
'<-- ${response.statusCode} ${response.reasonPhrase} ${response.request?.url}');
var loggedStream = response.stream.map((event) {
print(utf8.decode(event));
return event;
});
return http.StreamedResponse(
loggedStream,
response.statusCode,
headers: response.headers,
contentLength: response.contentLength,
isRedirect: response.isRedirect,
persistentConnection: response.persistentConnection,
reasonPhrase: response.reasonPhrase,
request: response.request,
);
}