2011-12-08 31 views
2

我是WP7的初學者。我需要向服務器發送請求。該請求包括用戶名,密碼和身份驗證標頭。如果成功,我以xml格式從服務器獲取一些數據。我如何將請求發送到服務器?發送請求從Windows Phone 7到服務器

+0

請求什麼?你需要調用一個web服務嗎? http url?你到現在爲止嘗試過什麼? – ChristiaanV

+0

@Nelson T Joseph你找到這個解決方案嗎? –

回答

4

你當然不應該使用WebClient類作爲該執行的UI線程,從而會導致應用程序鎖定,而不是看HttpWebRequest類。

這裏有一個很好的例子:http://www.codeproject.com/Articles/156610/WP7-WebClient-vs-HttpWebRequest

要添加標題,您可以訪問HttpWebRequest.Headers屬性,所以你可以添加一個基本的授權頭按本http://devproj20.blogspot.com/2008/02/assigning-basic-authorization-http.html 或者,你可以使用HttpWebRequest.Credentials財產(看到http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.credentials.aspx瞭解詳細信息)

你最好要檢查響應的狀態代碼來驗證,如果驗證成功,那麼你訪問HttpWebResponse.StatusCode屬性,看看它是否是401(未授權)。

+0

使用芒果更新,WebClient和HttpWebRequest之間沒有區別 - 兩者都在調用它們的線程中執行。 – Ku6opr

-1
void SendRequest() 
{ 
    WebClient wc = new WebClient(); 
    wc.DownloadStringAsync(new Uri("http://somesite.com/webservice")); 
    wc.DownloadStringCompleted +=DownloadStringCompleted; 
} 

void DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
{ 
    Debug.WriteLine("Web service says: " + e.Result); 
} 
+3

如果您是WP7的初學者(如提問者),請不要(無論您如何)使用WebClient作爲答案的建議,請參閱http://forums.silverlight.net/t/216188.aspx/1以獲取詳細信息 –

+1

芒果WebClient和HttpWebRequest都在它們被調用的線程中執行。 http://blogs.msdn.com/b/slmperf/archive/2011/06/21/webclient-change-for-mango-how-it-impacts-your-application.aspx – Ku6opr

+0

我不是WP7的初學者。但是我幾乎所有的經驗都在XNA和遊戲開發中,而我並沒有注意到這些問題。非常感謝,我會在我的項目中進行一些額外的測試。 – Eugene

1

試試這個:

WebClient webClient = new WebClient(); 
webClient.DownloadStringCompleted += (s, e) => 
{ 
    string xml = e.Result; 
}; 
webClient.DownloadStringAsync(new Uri("http://..." + your params));