send method
Sends an HTTP request and asynchronously returns the response.
Implementation
@override
Future<http.StreamedResponse> send(http.BaseRequest request) async {
final req = await _ioClient.openUrl(request.method, request.url);
for (final entry in request.headers.entries) {
req.headers.add(entry.key, entry.value);
}
final body = request.finalize();
if (_allowedBodyMethods.contains(request.method)) {
final bytes = await body.toBytes();
req.contentLength = bytes.length;
req.add(bytes);
}
final res = await req.close();
final resHeaders = <String, String>{};
res.headers.forEach((key, values) {
resHeaders[key] = values.join(',');
});
return http.StreamedResponse(
res,
res.statusCode,
request: request,
contentLength: res.contentLength == -1 ? null : res.contentLength,
headers: resHeaders,
isRedirect: res.isRedirect,
persistentConnection: res.persistentConnection,
reasonPhrase: res.reasonPhrase,
);
}