2011-05-11 42 views
13

我試圖使用HttpWebRequest發送GET請求。
我在網上發現了很多例子(例如,this one ...只是去了Scrape()方法)。他們基本上都做同樣的事情:在WP7項目中找不到HttpWebRequest.GetResponse()項目

創建使用WebRequest.Create(URL),並將其強制轉換爲HttpWebRequest,然後讓使用GetResponse()方法從HttpWebRequest的響應HttpWebRequest對象。

事情是,GetResponse()似乎不存在於HttpWebRequestWebRequest(這是它的基類)。我唯一的選擇是使用BeginGetResponse()

我唯一發現的是GetResponse()是同步的,而BeginGetResponse()是異步的,並且Silverlight只允許異步的。嗯,這根本不能幫助我,因爲整件事情都是XNA項目,而且這是我創建的一個簡單的C#類。
嗯更準確,這是一款Windows Phone的遊戲,在XNA 4.0中創建

HttpWebRequest webRequest = WebRequest.Create(URL) as HttpWebRequest; 
StreamReader responseReader = new StreamReader( 
     webRequest.GetResponse().GetResponseStream()); 

沒有人有任何想法,爲什麼我沒有GetResponse()

+3

這是Windows Phone的?如果是,那麼請求只是異步的。 – keyboardP

+0

我從來沒有遇到過問題。 [請參閱GetResponse()](http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.getresponse%28v=VS.90%29.aspx) - 但我只使用「正常」 。淨。請注意任何XNA差異。 – 2011-05-11 23:55:39

+0

Aaaah,我明白了。是的,這是WP7。我剛剛編輯了我的問題,並補充說,在我注意到你的答案之前。嘿嘿,希望我知道2小時前。那肯定會讓我頭痛。感謝您的幫助 –

回答

16

適用於Windows Phone 7的XNA 4只能進行異步調用。您也可以在this post的底部找到代碼。從該職位

代碼:

protected override void Initialize() 
{ 
    string webServiceAddress = @"http://localhost/service/service1.asmx";   
    string methodName = "HelloWorld"; 

    string webServiceMethodUri = string.Format("{0}/{1}", webServiceAddress, methodName); 

    HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(webServiceMethodUri); 
    httpWebRequest.Method = "POST"; 

    httpWebRequest.BeginGetResponse(Response_Completed, httpWebRequest); 

    base.Initialize(); 
} 

void Response_Completed(IAsyncResult result) 
{ 
    HttpWebRequest request = (HttpWebRequest)result.AsyncState; 
    HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result); 

    using (StreamReader streamReader = new StreamReader(response.GetResponseStream())) 
    { 
     string xml = streamReader.ReadToEnd(); 

     using(XmlReader reader = XmlReader.Create(new StringReader(xml))) 
     { 
      reader.MoveToContent(); 
      reader.GetAttribute(0); 
      reader.MoveToContent(); 
      message = reader.ReadInnerXml(); 
     } 
    } 
} 
+1

不錯,這正是我要找的。謝謝! –

+0

很高興幫助:) – keyboardP

+0

鏈接無效。你可以請更新嗎? – Asahi