zoukankan      html  css  js  c++  java
  • WP7中HttpWebRequest的使用方法之POST方式

       在WP7中的HttpWebRequest与在C#中的使用方式大致是一样的,但是在WP7中微软移去了同步的操作方式,所有的操作方式都改为异步,(提升用户体验,在请求过程中界面保持流畅)。

    下面给出两种编码方式 :其实都是一样的,只是第一种使用了独立方法的完成,(便于阅读和理解),第二种是直接用委托写在同一个方法里。

    第一种:

     1      CookieContainer cc = null;
     2         private void button1_Click(object sender, RoutedEventArgs e)
     3         {
     4             string url = "http://www.cnblogs.com/xdpxyxy";
     5 
     6             HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(new Uri(url));
     7 
     8             if (cc == null)
     9             {
    10                 cc = new CookieContainer();
    11             }
    12             myRequest.CookieContainer = cc;
    13 
    14             myRequest.Method = "POST";
    15 
    16             myRequest.ContentType = "application/x-www-form-urlencoded";
    17 
    18             myRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), myRequest);
    19 
    20         }
    21 
    22         /// <summary>
    23         ///  写入Stream的异步请求
    24         /// </summary>
    25         /// <param name="asynchronousResult"></param>
    26         private void GetRequestStreamCallback(IAsyncResult asynchronousResult)
    27         {
    28 
    29             HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
    30 
    31             System.IO.Stream postStream = request.EndGetRequestStream(asynchronousResult);
    32 
    33             //POST提交服务器的资源
    34             string PostData = "";
    35 
    36             byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(PostData);
    37 
    38             postStream.Write(byteArray, 0, PostData.Length);
    39 
    40             postStream.Close();
    41 
    42             request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
    43 
    44         }
    45 
    46         /// <summary>
    47         /// 对服务器资源异步请求
    48         /// </summary>
    49         /// <param name="asynchronousResult"></param>
    50         private void GetResponseCallback(IAsyncResult asynchronousResult)
    51         {
    52 
    53             HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
    54 
    55             HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
    56 
    57             Stream streamResponse = response.GetResponseStream();
    58 
    59             StreamReader streamRead = new StreamReader(streamResponse);
    60 
    61             string responseString = streamRead.ReadToEnd();
    62 
    63             streamRead.Close();
    64 
    65             streamResponse.Close();
    66 
    67         }

    第二种 :

     1        HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(new Uri(PostUrl));
     2             httpWebRequest.ContentType = "application/x-www-form-urlencoded";
     3             httpWebRequest.Method = "POST";
     4             if (co == null)
     5             {
     6                 httpWebRequest.CookieContainer = new CookieContainer();
     7             }
     8             else
     9             {
    10                 httpWebRequest.CookieContainer = co;
    11             }
    12             httpWebRequest.BeginGetRequestStream((IAsyncResult streamCallback) =>
    13             {
    14                 HttpWebRequest webRequest = streamCallback.AsyncState as HttpWebRequest;
    15 
    16                 byte[] buffer = Encoding.UTF8.GetBytes(PostData);
    17                 Stream stream = webRequest.EndGetRequestStream(streamCallback);
    18                 stream.Position = 0;
    19                 stream.Write(buffer, 0, buffer.Length);
    20                 stream.Close();
    21                 webRequest.BeginGetResponse((IAsyncResult responseCallback) =>
    22                 {
    23                     HttpWebRequest webRequest2 = responseCallback.AsyncState as HttpWebRequest;
    24                     HttpWebResponse webResponse = (HttpWebResponse)webRequest2.EndGetResponse(responseCallback);
    25                     Stream streamResponse = webResponse.GetResponseStream();
    26                     StreamReader sr = new StreamReader(streamResponse);
    27                     string str = sr.ReadToEnd();
    28                 }, webRequest);
    29             }, httpWebRequest);
  • 相关阅读:
    js 原生ajax实现
    layer 查看图片
    c# 操作XML
    C# 扩展方法
    c# 依赖注入
    visual studio 快捷键
    HIS系统结算后,没有更新单据状态为“已结算”
    网络流四·最小路径覆盖 HihoCoder
    飞行员配对(二分图最大匹配) 51Nod
    开心的小Q 51Nod
  • 原文地址:https://www.cnblogs.com/xdpxyxy/p/3130710.html
Copyright © 2011-2022 走看看