打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Windows8HttpClient

Windows8HttpClient

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

杂谈

//HttpClient GetText
       HttpClient httpClient;

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

       protected override voidOnNavigatedFrom(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 voidOnNavigatedTo(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(newProductInfoHeaderValue("Sample", "v8"));
       }

       protected override voidOnNavigatedFrom(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);
                     IBufferresponseBuffer =CryptographicBuffer.CreateFromByteArray(responseBytes);
                    responseBody.AppendFormat(CryptographicBuffer.EncodeToHexString(responseBuffer)+ Environment.NewLine);

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

    public classPlugInHandler : MessageProcessingHandler
    {
       public PlugInHandler(HttpMessageHandlerinnerHandler)
           :base(innerHandler)
       {
       }

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

           returnrequest;
       }

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

           returnresponse;
       }
    }


//HttpClient GetXML
       HttpClient httpClient;

       protected override voidOnNavigatedTo(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(newProductInfoHeaderValue("Sample", "v8"));
       }

       protected override voidOnNavigatedFrom(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")
                  selectc.Attribute("name").Value
                 );
           }
           catch(HttpRequestException hre)
           {
Debug.WriteLine(hre.Message);
           }


//HttpClient PostText
       HttpClient httpClient;

       protected override voidOnNavigatedTo(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(newProductInfoHeaderValue("Sample", "v8"));
       }

       protected override voidOnNavigatedFrom(NavigationEventArgs e)
       {
          Dispose();
       }


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

           try
           {
              string resourceAddress =AddressField.Text;

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



//HttpClient PostStream
       HttpClient httpClient;

       protected override voidOnNavigatedTo(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(newProductInfoHeaderValue("Sample", "v8"));
       }

       protected override voidOnNavigatedFrom(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'tknow 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 voidOnNavigatedTo(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(newProductInfoHeaderValue("Sample", "v8"));
       }

       protected override voidOnNavigatedFrom(NavigationEventArgs e)
       {
          Dispose();
       }

           try
           {
              MultipartFormDataContent form= new MultipartFormDataContent();
              form.Add(newStringContent(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);
           }

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Dotnet Core IHttpClientFactory深度研究
HttpClientFactory的套路,你知多少?
Spring Boot + MDC 实现全链路调用日志跟踪
ASP.NET Web API实践系列05,消息处理管道
9. Message&Handler
使用 FocusScopeNode 在 TextFormFields 之间轻松移动焦点
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服