2012-06-20 70 views
0

忙於使用Visual Studio 2010 Express for Windows phone,並且想調用一個從我的類中返回json的servlet。HttpWebRequest GetResponse沒有這樣的方法

我有以下方法至今:

public Login(string userName, string password){ 

    string servletUrl = "http://172.12.5.35:8080/SomeService/login?u="+userName+"&p="+password; 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(servletUrl); 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

} 

但由於某些原因我右邊的「GetResponse()」方法調用說,有沒有這樣的方法得到一個錯誤?任何人有任何想法?我環顧四周,我的代碼似乎適合我?

編輯---------------------------

public Login(string userName, string password){ 

    string servletUrl = "http://172.12.5.35:8080/SomeService/login?u="+userName+"&p="+password; 
    using(var client = (IDisposable)new WebClient(servletUrl)) 
    { 
     string result = client.DownloadString(servletUrl); 

    { 

} 

但似乎沒有用於Web客戶端沒有DownloadString方法?

回答

3

Windows Phone 7(和一般的Silverlight)不支持同步IO。如果你看Silverlight API documentation,你會發現編譯器是完全正確的 - 不是 a GetResponse方法。您需要改用async BeginGetResponse方法。

另外,使用WebClient可以使異步部分變得更簡單一些 - 當然,C#5的異步支持通常會使異步變得更容易。

編輯:正如註釋中所述 - DownloadString仍然是同步的,所以在Silverlight中不支持。您需要異步API,例如DownloadStringAsync

+0

感謝您的答案喬恩,我現在做它如下(請參閱編輯後)...但我仍然收到錯誤... – Tiwaz89

+3

@DeanGrobler **重讀**喬恩的答案,並嘗試'DownloadStringAsync ' –

相關問題