我正在尝试使用httpwebrequest发送get请求。
我在网上找到了很多例子(例如,this one…直接转到Scrape()方法)。他们基本上都做同样的事情:
使用webrequest.create(url)创建HttpWebRequest对象并将其转换为HttpWebRequest,然后使用GetResponse()中的HttpWebRequest方法获取响应。
问题是,GetResponse()似乎不存在于HttpWebRequestWebRequest中(这是它的基类)。我唯一的选择是使用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/

10-11 11:24