コード例 #1
0
        public static async Task <T> GetJsonStreamAsync(Uri Url, string authorizationScheme, string authorizationToken, CancellationToken cancellationToken, TimeSpan httpTimeout)
        {
            var request = new HttpRequestMessage(HttpMethod.Get, Url);

            using (var client = new HttpClient {
                Timeout = httpTimeout
            })
            {
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(authorizationScheme, authorizationToken);

                using (var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken))
                {
                    var stream = await response.Content.ReadAsStreamAsync();

                    if (response.IsSuccessStatusCode)
                    {
                        return(ClientHelpers.DeserializeJsonFromStream <T>(stream));
                    }

                    var content = await ClientHelpers.StreamToStringAsync(stream);

                    throw new Exception($"{ (int)response.StatusCode } { content}");
                }
            }
        }