コード例 #1
0
 private async Task<string> FetchGzipCompressedHttpContent(Uri uri)
 {
     var handler = new CompressedHttpClientHandler();
     var client = new HttpClient(handler);
     var result = await client.GetStringAsync(uri);
     return result;
 }
コード例 #2
0
        public async Task GetStringAsync()
        {
            var handler = new CompressedHttpClientHandler();
            var client  = new HttpClient(handler);
            var result  = await client.GetStringAsync(NuGetString);

            Assert.IsNotNull(result);
        }
コード例 #3
0
        private async Task <string> FetchGzipCompressedHttpContent(Uri uri)
        {
            var handler = new CompressedHttpClientHandler();
            var client  = new HttpClient(handler);
            var result  = await client.GetStringAsync(uri);

            return(result);
        }
コード例 #4
0
        public async Task SendAsyncWithHeaders()
        {
            var handler = new CompressedHttpClientHandler();
            var client  = new HttpClient(handler);
            var message = new HttpRequestMessage(HttpMethod.Get, new Uri(NuGetString, UriKind.RelativeOrAbsolute));
            var result  = await client.SendAsync(message);

            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Content);
            Assert.IsNotNull(result.Content.Headers);
        }
コード例 #5
0
ファイル: IOClasses.cs プロジェクト: kurkha/jalistutkain
        /// <summary>
        /// Read zipped html page and return its content as string.
        /// </summary>
        /// <param name="pageAdress">The address of the zipped page.</param>
        /// <returns>Content of the page as a string.</returns>
        public static async Task<string> readCompressedHtmlPageAsync(string pageAdress)
        {
            CompressedHttpClientHandler handler = new CompressedHttpClientHandler();
            HttpClient client = new HttpClient(handler);

            HttpResponseMessage response = await client.GetAsync(pageAdress);
            response.EnsureSuccessStatusCode();

            string content = await response.Content.ReadAsStringAsync();
            
            return content;
        }
コード例 #6
0
ファイル: WinSourceClient.cs プロジェクト: garapani/outlook
 public async Task <string> GetArticles(string url)
 {
     try
     {
         AdvancedREI.Net.Http.Compression.CompressedHttpClientHandler handler = new CompressedHttpClientHandler();
         System.Net.Http.HttpClient hc = new System.Net.Http.HttpClient(handler);
         hc.DefaultRequestHeaders.Add("Cache-Control", "no-cache");
         hc.DefaultRequestHeaders.ConnectionClose = true;
         //hc.DefaultRequestHeaders.CacheControl.NoCache = true;
         return(await hc.GetStringAsync(new Uri(url)));
     }
     catch (Exception)
     {
         return("");
     }
 }
コード例 #7
0
ファイル: RestClient.cs プロジェクト: ChrisWay/PortableRest
        /// <summary>
        /// Executes an asynchronous request to the given resource and deserializes the response to an object of T.
        /// </summary>
        /// <typeparam name="T">The type to deserialize to.</typeparam>
        /// <param name="restRequest">The RestRequest to execute.</param>
        /// <returns>An object of T.</returns>
        public async Task <T> ExecuteAsync <T>(RestRequest restRequest) where T : class
        {
            T   result = null;
            var url    = restRequest.GetFormattedResource(BaseUrl);

            if (string.IsNullOrWhiteSpace(restRequest.DateFormat) && !string.IsNullOrWhiteSpace(DateFormat))
            {
                restRequest.DateFormat = DateFormat;
            }

            var handler = new CompressedHttpClientHandler {
                AllowAutoRedirect = true
            };

            _client = new HttpClient(handler);

            if (!string.IsNullOrWhiteSpace(UserAgent))
            {
                _client.DefaultRequestHeaders.Add("user-agent", UserAgent);
            }

            var message = new HttpRequestMessage(restRequest.Method, new Uri(restRequest.Resource, UriKind.RelativeOrAbsolute));

            foreach (var header in Headers)
            {
                message.Headers.Add(header.Key, header.Value);
            }

            if (restRequest.Method == HttpMethod.Post || restRequest.Method == HttpMethod.Put)
            {
                var contentString = new StringContent(restRequest.GetRequestBody(), Encoding.UTF8, restRequest.GetContentType());
                message.Content = contentString;
            }

            HttpResponseMessage response = null;

            response = await _client.SendAsync(message);

            response.EnsureSuccessStatusCode();

            var responseContent = await response.Content.ReadAsStringAsync();

            //TODO: Handle Error
            if (response.Content.Headers.ContentType.MediaType == "application/xml")

            {
                // RWM: IDEA - The DataContractSerializer doesn't like attributes, but will handle everything else.
                // So instead of trying to mess with a double-conversion to JSON and then to the Object, we'll just turn the attributes
                // into elements, and sort the elements into alphabetical order so the DataContracterializer doesn't crap itself.

                // On post, use a C# attribute to specify if a property is an XML attribute, DataContractSerialize to XML, then
                // query the object for [XmlAttribute] attributes and move them from elements to attributes using code similar to below.
                // If the POST request requires the attributes in a certain order, oh well. Shouldn't have used PHP :P.

                XElement root    = XElement.Parse(responseContent);
                XElement newRoot = (XElement)Transform(restRequest.IgnoreRootElement ? root.Descendants().First() : root, restRequest);

                using (var memoryStream = new MemoryStream(Encoding.Unicode.GetBytes(newRoot.ToString())))
                {
                    var settings = new XmlReaderSettings {
                        IgnoreWhitespace = true
                    };
                    using (var reader = XmlReader.Create(memoryStream, settings))
                    {
                        try
                        {
                            var serializer = new DataContractSerializer(typeof(T));
                            result = serializer.ReadObject(reader) as T;
                        }
                        catch (SerializationException ex)
                        {
                            throw new PortableRestException(string.Format("The serializer failed on node '{0}'", reader.Name), reader.Name, ex);
                        }
                    }
                }
            }
            else
            {
                result = JsonConvert.DeserializeObject <T>(responseContent);
            }

            return(result);
        }