- override
Sends an HTTP request and asynchronously returns the response.
Source
@override Future<StreamedResponse> send(BaseRequest request) async { dynamic stream = request.finalize(); try { dynamic ioRequest = await _inner.openUrl(request.method, request.url); ioRequest ..followRedirects = request.followRedirects ..maxRedirects = request.maxRedirects ..contentLength = request.contentLength == null ? -1 : request.contentLength ..persistentConnection = request.persistentConnection; request.headers.forEach((String name, String value) { ioRequest.headers.set(name, value); }); dynamic response = await stream.pipe( DelegatingStreamConsumer.typed(ioRequest)); Map<String, dynamic> headers = <String, dynamic>{}; response.headers.forEach((String key, dynamic values) { headers[key] = values.join(','); }); return new StreamedResponse( DelegatingStream.typed/*<List<int>>*/(response).handleError((dynamic error) => throw new ClientException(error.message, error.uri), test: (dynamic error) => io.isHttpException(error)), response.statusCode, contentLength: response.contentLength == -1 ? null : response.contentLength, request: request, headers: headers, isRedirect: response.isRedirect, persistentConnection: response.persistentConnection, reasonPhrase: response.reasonPhrase); } catch (error) { if (!io.isHttpException(error)) rethrow; throw new ClientException(error.message, error.uri); } }