Exemplo n.º 1
0
        /// <summary>
        /// Send http request and return <see cref="HttpResponseMessage"/> received.
        /// </summary>
        /// <param name="url">Url to be requested.</param>
        /// <param name="data">Data to be sent.</param>
        /// <param name="options">Request options.</param>
        /// <returns>Asynchronous task.</returns>
        protected async Task <HttpResponseMessage> GetResponseMessageAsync(string url, object data = null, HttpRequestOptions options = null)
        {
            if (options == null)
            {
                options = new HttpRequestOptions();
            }

            using (var client = new HttpClient(InnerHandler ?? new HttpClientHandler(), InnerHandler == null))
            {
                client.BaseAddress = new Uri(BaseUrl);

                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/octet-stream"));

                var request = new HttpRequestMessage(options.Method, url);
                if (options.Method != HttpMethod.Get && data != null)
                {
                    request.Content = data as HttpContent ?? new StringContent(data.ToString(), Encoding.UTF8);
                }

                try
                {
                    var response = await client.SendAsync(request, options.Completion, options.Token).ConfigureAwait(false);

                    if (!response.IsSuccessStatusCode)
                    {
                        OnError(response, null);
                    }

                    return(response);
                }
                catch (Exception e)
                {
                    OnError(null, e);
                }
            }

            return(null);
        }
Exemplo n.º 2
0
        private async Task <T> CallWebHDFS <T>(string path, string operation, HttpContent content = null, HttpRequestOptions options = null) where T : IJObject, new()
        {
            string uri = GetUriForOperation(path).SetQueryParam("op", operation);

            if (options.AdditionalQueryParameters != null)
            {
                uri = uri.SetQueryParams(options.AdditionalQueryParameters);
            }

            var response = await GetResponseMessageAsync(uri, content, options ?? new HttpRequestOptions());

            if (response.IsSuccessStatusCode)
            {
                var jobj = JObject.Parse(await response.Content.ReadAsStringAsync());

                if (jobj == null)
                {
                    return(default(T));
                }

                var result = new T() as IJObject;
                result.Parse(jobj);
                return((T)result);
            }

            return(default(T));
        }