分享

Windows8HttpClient

 牛人的尾巴 2015-12-01

Windows8HttpClient

(2013-01-15 10:31:45)
标签:

杂谈

//HttpClient GetText
        HttpClient httpClient;

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {    
            httpClient = new HttpClient();
        }

        protected override void OnNavigatedFrom(NavigationEventArgs e)
        {
            Dispose();
        }

            try
            {
                HttpResponseMessage response = await httpClient.GetAsync(resourceUri);

                string responseBodyAsText = await response.Content.ReadAsStringAsync();
                responseBodyAsText = responseBodyAsText.Replace("
", "\n");
            }
            catch (HttpRequestException hre)
            {
Debug.WriteLine(hre.Message);
            }

        public void Dispose()
        {
            if (httpClient != null)
            {
                httpClient.Dispose();
                httpClient = null;
            }
        }

        private void Cancel_Click(object sender, RoutedEventArgs e)
        {
            httpClient.CancelPendingRequests();
        }


//HttpClient GetStream
        HttpClient httpClient;

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (httpClient != null)
                httpClient.Dispose();

            //HttpMessageHandler: HTTP消息处理程序的基类型
            HttpMessageHandler handler = new HttpClientHandler();
            handler = new PlugInHandler(handler);

            httpClient = new HttpClient(handler);
            httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("Sample", "v8"));
        }

        protected override void OnNavigatedFrom(NavigationEventArgs e)
        {
            Dispose();
        }

            try
            {
                string resourceAddress = AddressField.Text;

                HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, resourceAddress);
                HttpResponseMessage response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);

                StringBuilder responseBody = new StringBuilder();
                using (Stream responseStream = await response.Content.ReadAsStreamAsync())
                {
                    int read = 0;
                    byte[] responseBytes = new byte[1000];
                    do
                    {
                        read = await responseStream.ReadAsync(responseBytes, 0, responseBytes.Length);//读取操作: responseStream -> responseBytes

                        responseBody.AppendFormat("流中读取的字节数: {0} \n", read);
                        IBuffer responseBuffer = CryptographicBuffer.CreateFromByteArray(responseBytes);
                        responseBody.AppendFormat(CryptographicBuffer.EncodeToHexString(responseBuffer) + Environment.NewLine);

                    } while (read != 0);
                }
            }
            catch (HttpRequestException hre)
            {
Debug.WriteLine(hre.Message);
            }

    public class PlugInHandler : MessageProcessingHandler
    {
        public PlugInHandler(HttpMessageHandler innerHandler)
            : base(innerHandler)
        {
        }

        protected override HttpRequestMessage ProcessRequest(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            if (request.Method == HttpMethod.Get)
                request.Headers.Add("Custom-Header", "CustomRequestValue");

            return request;
        }

        protected override HttpResponseMessage ProcessResponse(HttpResponseMessage response, CancellationToken cancellationToken)
        {
            if (response.RequestMessage.Method == HttpMethod.Get)
                response.Headers.Add("Custom-Header", "CustomResponseValue");

            return response;
        }
    }


//HttpClient GetXML
        HttpClient httpClient;

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (httpClient != null)
                httpClient.Dispose();

            //HttpMessageHandler: HTTP消息处理程序的基类型
            HttpMessageHandler handler = new HttpClientHandler();
            handler = new PlugInHandler(handler);

            httpClient = new HttpClient(handler);
            httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("Sample", "v8"));
        }

        protected override void OnNavigatedFrom(NavigationEventArgs e)
        {
            Dispose();
        }

            try
            {
                string resourceAddress = AddressField.Text;

                HttpResponseMessage response = await httpClient.GetAsync(resourceAddress);
                response.EnsureSuccessStatusCode();
       
//字符串转换XML元素
                XElement element = XElement.Parse(await response.Content.ReadAsStringAsync());
                this.msiListBox.ItemsSource =
                    (from c in element.Elements("item")
                     select c.Attribute("name").Value
                    );
            }
            catch (HttpRequestException hre)
            {
Debug.WriteLine(hre.Message);
            }


//HttpClient PostText
        HttpClient httpClient;

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (httpClient != null)
                httpClient.Dispose();

            //HttpMessageHandler: HTTP消息处理程序的基类型
            HttpMessageHandler handler = new HttpClientHandler();
            handler = new PlugInHandler(handler);

            httpClient = new HttpClient(handler);
            httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("Sample", "v8"));
        }

        protected override void OnNavigatedFrom(NavigationEventArgs e)
        {
            Dispose();
        }


            if (httpClient.BaseAddress == null)
            {
                Uri baseAddress = new Uri(BaseAddress.Text);
                httpClient.BaseAddress = baseAddress;
            }

            try
            {
                string resourceAddress = AddressField.Text;

                HttpResponseMessage response = await httpClient.PostAsync(resourceAddress,new StringContent(this.RequestBodyField.Text));
                
string responseBodyAsText = await response.Content.ReadAsStringAsync();
                responseBodyAsText = responseBodyAsText.Replace("
", "\n"); // Insert new lines
            }
            catch (HttpRequestException hre)
            {
Debug.WriteLine(hre.Message);
            }



//HttpClient PostStream
        HttpClient httpClient;

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (httpClient != null)
                httpClient.Dispose();

            //HttpMessageHandler: HTTP消息处理程序的基类型
            HttpMessageHandler handler = new HttpClientHandler();
            handler = new PlugInHandler(handler);

            httpClient = new HttpClient(handler);
            httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("Sample", "v8"));
        }

        protected override void OnNavigatedFrom(NavigationEventArgs e)
        {
            Dispose();
        }

            try
            {
                string resourceAddress = AddressField.Text.Trim();
                HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, resourceAddress);

                StreamContent streamContent = new StreamContent(stream);
                request.Content = streamContent;
                request.Headers.TransferEncodingChunked = true; // Assume we don't know the content length

                HttpResponseMessage response = await httpClient.SendAsync(request);

                string responseBodyAsText = await response.Content.ReadAsStringAsync();
                responseBodyAsText = responseBodyAsText.Replace("
", "\n");
            }
            catch (HttpRequestException hre)
            {
Debug.WriteLine(hre.Message);
            }


//HttpClient PostMultipartFormDataContent
        HttpClient httpClient;

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (httpClient != null)
                httpClient.Dispose();

            //HttpMessageHandler: HTTP消息处理程序的基类型
            HttpMessageHandler handler = new HttpClientHandler();
            handler = new PlugInHandler(handler);

            httpClient = new HttpClient(handler);
            httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("Sample", "v8"));
        }

        protected override void OnNavigatedFrom(NavigationEventArgs e)
        {
            Dispose();
        }

            try
            {
                MultipartFormDataContent form = new MultipartFormDataContent();
                form.Add(new StringContent(RequestBodyField.Text), "Data");

                string resourceAddress = AddressField.Text.Trim();
                HttpResponseMessage response = await httpClient.PostAsync(resourceAddress, form);

                string responseBodyAsText = await response.Content.ReadAsStringAsync();
                responseBodyAsText = responseBodyAsText.Replace("
", "\n");
            }
            catch (HttpRequestException hre)
            {
Debug.WriteLine(hre.Message);
            }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多