send method

  1. @override
Future<StreamedResponse> send(
  1. BaseRequest request
)

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,
  );
}