Windows Phone 8.1的網路編程之HttpWebRequest類

來源:互聯網
上載者:User

標籤:windows phone 8.1   httpwebrequest   begingetresponse   begingetrequeststrea   responsestreamcallba   

Windows Phone中有兩個類可以實現HTTP協議的網路請求:HttpWebRequest類HttpClient類

前者適合處理簡單的網路請求,後者對HTTP請求的支援更加強大,適合複雜的網路請求封裝。


不過在此之前需要認識一個HTTP的兩種請求方式:Get請求和Post請求。

兩者的區別是:Get請求:從伺服器上擷取資料,通過URI提交資料,資料在URI中可以看到,同時提交的資料最多隻

能有1024位元組。Post請求:向伺服器傳送資料,通過寫入資料流的方式提交,Post請求對於提交的資料大小沒有限

制。


網路請求中,肯定會有各種各樣的不確定錯誤,引發WebException,其Status屬性包含指示錯誤源的

WebExceptionStatus。其枚舉值如下:

Success:成功

ConnectFailure:遠程伺服器串連失敗

SendFailure:發送失敗

RequestCanceled:請求被取消

Pending:內部非同步請求掛起

UnknownError:未知錯誤

MessageLengthLimitExceeded:網路請求的訊息長度受到限制


範例程式碼:

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Net;using System.Runtime.InteropServices.WindowsRuntime;using System.Text;using Windows.Foundation;using Windows.Foundation.Collections;using Windows.UI.Xaml;using Windows.UI.Xaml.Controls;using Windows.UI.Xaml.Controls.Primitives;using Windows.UI.Xaml.Data;using Windows.UI.Xaml.Input;using Windows.UI.Xaml.Media;using Windows.UI.Xaml.Navigation;// “空白頁”項目範本在 http://go.microsoft.com/fwlink/?LinkID=390556 上有介紹namespace App1{    /// <summary>    /// 可用於自身或導航至 Frame 內部的空白頁。    /// </summary>    public sealed partial class HttpWebRequestDemo : Page    {        public HttpWebRequestDemo()        {            this.InitializeComponent();            //WebRequest和HttpWebRequest            HttpWebRequest request = HttpWebRequest.CreateHttp("http://www.baidu.com");            //佈建要求的方法            request.Method = "Get";            //request.Method = "Post";            //指定構成HTTP標題的成對的名稱和數值的集合            request.Headers["Cookie"] = "stuName = value";            //佈建要求的身分識別驗證資訊            request.Credentials = new NetworkCredential("username", "password");            //發起GetResponse請求,開始對Internet資源的非同步請求            request.BeginGetResponse(responseCallBack, request);            //request.BeginGetRequestStream(responseStreamCallBack, request);        }        //發送擷取發送資料流的請求的響應回調方法        //private void responseStreamCallBack(IAsyncResult ar)        //{        //    HttpWebRequest httpWebRequest = (HttpWebRequest)ar.AsyncState;        //    using (Stream stream = httpWebRequest.EndGetRequestStream(ar))        //    {        //        string content = "testString";        //        byte[] data = Encoding.UTF8.GetBytes(content);        //        stream.Write(data, 0, data.Length);        //    }        //    httpWebRequest.BeginGetResponse(ResponseCallBackPost, httpWebRequest);        //}        //private void ResponseCallBackPost(IAsyncResult ar)        //{        //    //和Get請求回調方法一樣        //}        //請求回掉方法        private void responseCallBack(IAsyncResult ar)        {            HttpWebRequest httpWebRequest = (HttpWebRequest)ar.AsyncState;            WebResponse webResponse = httpWebRequest.EndGetResponse(ar);            //擷取請求返回的內容            using(Stream stream = webResponse.GetResponseStream())            using(StreamReader sr = new StreamReader(stream))            {                //請求返回的字串的內容                string content = sr.ReadToEnd();            }        }        /// <summary>        /// 在此頁將要在 Frame 中顯示時進行調用。        /// </summary>        /// <param name="e">描述如何訪問此頁的事件數目據。        /// 此參數通常用於配置頁。</param>        protected override void OnNavigatedTo(NavigationEventArgs e)        {        }    }}

Windows Phone 8.1的網路編程之HttpWebRequest類

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.