Dart Documentationclean_ajax.http_client

clean_ajax.http_client library

Functions

Future<HttpRequest> sendHttpRequest(String url, {String method, bool withCredentials, String responseType, String mimeType, Map<String, String> requestHeaders, sendData, void onProgress(ProgressEvent e), int timeout, Function requestFactory}) #

Custom variant of the HttpRequest.request() method which handles timeouts and divides Connection errors with Erroneous responses (HTTP errors)

Future<HttpRequest> sendHttpRequest(String url,
   {String method, bool withCredentials, String responseType,
 String mimeType, Map<String, String> requestHeaders, sendData,
 void onProgress(ProgressEvent e), int timeout, Function requestFactory}) {
 var completer = new Completer<HttpRequest>();

 var xhr = new HttpRequest();
 if (null != requestFactory) xhr = requestFactory();
 if (method == null) {
   method = 'GET';
 }
 xhr.open(method, url, async: true);

 if (withCredentials != null) {
   xhr.withCredentials = withCredentials;
 }

 if (responseType != null) {
   xhr.responseType = responseType;
 }

 if (mimeType != null) {
   xhr.overrideMimeType(mimeType);
 }

 if (requestHeaders != null) {
   requestHeaders.forEach((header, value) {
     xhr.setRequestHeader(header, value);
   });
 }

 if (onProgress != null) {
   xhr.onProgress.listen(onProgress);
 }

 if (timeout != null) {
   xhr.timeout = timeout;
   xhr.onTimeout.listen((e) {
     return completer.completeError(new ConnectionError(e));
   });
 }

 xhr.onLoad.listen((e) {
   // Note: file:// URIs have status of 0.
   if ((xhr.status >= 200 && xhr.status < 300) ||
       xhr.status == 0 || xhr.status == 304) {
     completer.complete(xhr);
   } else {
     completer.completeError(new ResponseError(e));
   }
 });

 xhr.onError.listen((e) => completer.completeError(new ConnectionError(e)));

 if (sendData != null) {
   xhr.send(sendData);
 } else {
   xhr.send();
 }

 return completer.future;
}