在WP7项目中找不到HttpWebRequest.GetResponse()
我正在尝试使用HttpWebRequest发送GET请求。
我在网上找到了很多例子(例如, 这一个 ……只需要转到Scrape()
方法)。 他们基本上都做同样的事情:
使用WebRequest.Create(URL)创建HttpWebRequest
对象并将其强制转换为HttpWebRequest
,然后使用HttpWebRequest
的GetResponse()
方法获取响应。
事实上, GetResponse()
似乎不存在于HttpWebRequest
或WebRequest
(它是它的基类)中。 我唯一的选择是使用BeginGetResponse()
。
我发现的唯一事情是GetResponse()
是同步的,而BeginGetResponse()
是异步的,而Silverlight只允许异步的。 好吧,这根本没有帮助,因为整个事情是一个XNA项目,这是我在里面创建的一个简单的C#类。
更确切地说,这是一款在XNA 4.0中创建的Windows Phone游戏
HttpWebRequest webRequest = WebRequest.Create(URL) as HttpWebRequest; StreamReader responseReader = new StreamReader( webRequest.GetResponse().GetResponseStream());
有没有人知道为什么我没有GetResponse()
?
用于Windows Phone 7的XNA 4只能进行异步调用。 您可能会发现本文底部的代码也很有用。
该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(); } } }