我正在尝试使用 HttpWebRequest 发送 GET 请求。
我在整个网络上找到了很多示例(例如,this one ...只需转到 Scrape()
方法)。他们基本上都做同样的事情:
创建一个 HttpWebRequest
使用 WebRequest.Create(URL) 对象并将其转换为 HttpWebRequest
,然后使用 GetResponse()
获取响应方法来自 HttpWebRequest
.
事实是,GetResponse()
HttpWebRequest
中似乎都不存在或 WebRequest
(这是它的基类)。我唯一的选择是使用 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()
?
最佳答案
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();
}
}
}
关于c# - 在 WP7 项目中找不到 HttpWebRequest.GetResponse(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5971866/