Windows Phone 網絡HttpWebRequest用法


  在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)
            {
                //異常處理

            }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM