Пример #1
0
        public IServiceCall CallAsync(string uri, string method, IDictionary <string, string> headers, IAndroidHttpClientCallTemplate callTemplate, IServiceCallback serviceCallback)
        {
            callTemplate?.OnBeforeCalling(new Java.Net.URL(uri), headers);
            var jsonContent             = callTemplate?.BuildRequestBody();
            var cancellationTokenSource = new CancellationTokenSource();

            _httpNetworkAdapter.SendAsync(uri, method, headers, jsonContent, cancellationTokenSource.Token).ContinueWith(t =>
            {
                var innerException = t.Exception?.InnerException;
                if (innerException is HttpException)
                {
                    var response = (innerException as HttpException).HttpResponse;
                    serviceCallback.OnCallFailed(new AndroidHttpException(new AndroidHttpResponse(response.StatusCode, response.Content)));
                }
                else if (innerException != null)
                {
                    serviceCallback.OnCallFailed(new Java.Lang.Exception(innerException.Message));
                }
                else
                {
                    var response = t.Result;
                    serviceCallback.OnCallSucceeded(new AndroidHttpResponse(response.StatusCode, response.Content));
                }
            });
            return(new ServiceCall(cancellationTokenSource));
        }