Windows Phone網路HttpWebRequest用法
在Windows Phone系統中,通過HttpWebRequest類可以很容易的傳送網路請求,獲取網路資料。HttpWebRequest是非同步操作,不會堵塞主執行緒。
1.通過HttpWebRequest.CreateHttp()方法可以建立一個HttpWebRequest,下面程式碼簡單實現傳送一個GET請求。
httpGet
public void httpGet()
{
try
{
//請求地址
String url = "http://www.2cto.com/";
//建立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.2cto.com/";
//建立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("");
//返回應答請求非同步操作的狀態
request.BeginGetResponse(responseCallback, request);
}
catch (WebException e)
{
//異常處理
}
catch (Exception e)
{
//異常處理
}
}
相關文章
- HttpWebRequest和WebClient的用法HTTPWebclient
- Windows Phone 8.1 傳送http 網路請求。WindowsHTTP
- Windows Phone 7監測網路環境變化Windows
- Windows Phone FAQWindows
- Windows Phone 體驗Windows
- Dribbble for windows phone 8Windows
- Windows Phone 解析圖片格式Windows
- Windows Phone 7 墓碑機制Windows
- Windows Phone 7程式設計Windows程式設計
- Windows (wince、 windows mobile、windows phone)錯誤程式碼大全Windows
- 一個IT愛好者眼中的Windows Phone和Android PhoneWindowsAndroid
- Windows Phone 7 開發 31 日談——第21日:Silverlight Toolkit for Windows PhoneWindows
- Windows Phone 8開發連結Windows
- Windows Phone程式設計回顧Windows程式設計
- Windows Phone 7解析圖片格式Windows
- windows phone資料庫開發Windows資料庫
- Windows Phone 8 開發筆記Windows筆記
- 一起學Windows Phone7開發(十四.一 Phone Task)Windows
- Windows網路命令Windows
- Windows 網路命令Windows
- HttpWebRequest 保持sessionHTTPWebSession
- Windows Phone SDK 8/8.1 官方下載Windows
- 微軟洩漏Windows Phone 8新特性微軟Windows
- PHP yield 高階用法——網路PHP
- 網路--ping用法知多少
- windows網路命令大全Windows
- Windows Phone 7 點陣圖程式設計Windows程式設計
- Windows Phone是如何被微軟ZUO死的?Windows微軟
- Windows Phone 資料繫結轉換器Windows
- 微軟宣佈Windows Phone授權免費微軟Windows
- 演示Microsoft Advertising SDK for Windows Phone 8.1ROSWindows
- Windows Phone 8開發知識筆記Windows筆記
- Windows Phone 離主流系統還很遠Windows
- Windows Phone 中WebBrowser開啟新視窗WindowsWeb
- HTML Agility Pack for Windows Phone 7 (WP7)HTMLWindows
- Windows Phone 7 SIM卡資訊獲取Windows
- Windows Phone 部分控制元件的應用Windows控制元件
- 獲取 Windows Phone 的 User-Agent 字串Windows字串