我正在尝试使用httpwebrequest发送get请求。
我在网上找到了很多例子(例如,this one…直接转到Scrape()
方法)。他们基本上都做同样的事情:
使用webrequest.create(url)创建HttpWebRequest
对象并将其转换为HttpWebRequest
,然后使用GetResponse()
中的HttpWebRequest
方法获取响应。
问题是,GetResponse()
似乎不存在于HttpWebRequest
或WebRequest
中(这是它的基类)。我唯一的选择是使用BeginGetResponse()
。
我只发现GetResponse()
是同步的,而BeginGetResponse()
是异步的,而且silverlight只允许异步的。好吧,这对我一点帮助都没有,因为整个事情是一个XNA项目,这是我在里面创建的一个简单的C类。
更准确地说,这是一款Windows Phone游戏,由XNA4.0创建
HttpWebRequest webRequest = WebRequest.Create(URL) as HttpWebRequest;
StreamReader responseReader = new StreamReader(
webRequest.GetResponse().GetResponseStream());
有人知道我为什么没有
GetResponse()
? 最佳答案
XNA 4对于Windows电话7只能进行异步调用。您可能会发现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/