Windows Phone 網路HttpWebRequest用法

來源:互聯網
上載者:User

  在Windows Phone系統中,通過HttpWebRequest類可以很容易的發送網路請求,擷取網路資料。HttpWebRequest是非同步作業,不會堵塞主線程。
  1.通過HttpWebRequest.CreateHttp()方法可以建立一個HttpWebRequest,下面代碼簡單實現發送一個GET請求。

httpGet

        public void httpGet()        {            try            {                //請求地址                String url = "http://www.cnblogs.com/huizhang212/";                //建立WebRequest類                HttpWebRequest request = HttpWebRequest.CreateHttp(new Uri(url));                //佈建要求方式GET POST                request.Method = "GET";                //返回應答請求非同步作業的狀態                request.BeginGetResponse(responseCallback, request);            }            catch (WebException e)            {                //網路相關異常處理            }            catch (Exception e)            {                //異常處理            }        }

  2.應答資料接收部分。

responseCallback

        private void responseCallback(IAsyncResult result)        {            try            {                //擷取非同步作業返回的的資訊                HttpWebRequest request = (HttpWebRequest)result.AsyncState;                //結束對 Internet 資源的非同步請求                HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);                //解析應答頭                //parseRecvHeader(response.Headers);                //擷取請求體資訊長度                long contentLength = response.ContentLength;                //擷取應答碼                int statusCode = (int)response.StatusCode;                string statusText = response.StatusDescription;                //應答頭資訊驗證                using (Stream stream = response.GetResponseStream())                {                    //擷取請求資訊                    StreamReader read = new StreamReader(stream);                    string msg = read.ReadToEnd();                    Deployment.Current.Dispatcher.BeginInvoke(() =>                    {                        textBlock1.Text = msg;                    });                }            }            catch (WebException e)            {                //串連失敗                           }            catch (Exception e)            {                //異常處理                            }        }

  通過HttpWebResponse可以擷取返回的資料,在擷取資料後,要想將資料顯示到介面中,這裡要主要一個問題。由於HttpWebRequest是非同步作業,所以這裡應該有一個線程來處理網路,大家都知道Windows Phone中線上程裡是不能操作UI的,這個需要交個UI主線程來處理,所以代碼中用到了Deployment.Current.Dispatcher.BeginInvoke。
  3.上面是簡單的GET請求,POST請求和GET請求相比,多了一個發送請求體的操作過程。以下代碼為POST請求,應對部分操作函數仍然是responseCallback。

httpPost

        public void httpPost()        {            try            {                //請求地址                String url = "http://www.cnblogs.com/huizhang212/";                //建立WebRequest類                HttpWebRequest request = HttpWebRequest.CreateHttp(new Uri(url));                //佈建要求方式GET POST                request.Method = "POST";                //返回應答請求非同步作業的狀態                request.BeginGetRequestStream(requestCallback, request);            }            catch (WebException e)            {                //網路相關異常處理            }            catch (Exception e)            {                //異常處理            }        }        private void requestCallback(IAsyncResult result)        {            try            {                //擷取非同步作業返回的的資訊                HttpWebRequest request = (HttpWebRequest)result.AsyncState;                //結束對 Internet 資源的非同步請求                StreamWriter postStream = new StreamWriter(request.EndGetRequestStream(result));                postStream.WriteLine("作者:宇之樂");                postStream.WriteLine("出處:http://www.cnblogs.com/huizhang212/");                //返回應答請求非同步作業的狀態                request.BeginGetResponse(responseCallback, request);            }            catch (WebException e)            {                //異常處理            }            catch (Exception e)            {                //異常處理            }        }

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.