【问题标题】:How do we read webpages using WP7 Mango? [closed]我们如何使用 WP7 Mango 阅读网页? [关闭]
【发布时间】:2011-12-03 09:46:56
【问题描述】:

我正在尝试使用 Windows Phone 7.1 SDK (Mango) 使用 WP7 阅读网页。我有一个 URL,我想阅读它,然后在上面执行一些功能。我尝试使用 HttpWebRequest 和 WebClient 但未能成功获得响应。有什么建议么?更新:在我使用的代码下面找到。问题是我只能读取页面的部分响应。

    private void btnGo_Click(object sender, RoutedEventArgs e) 
    { 
        try 
        { 
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(txtURL.Text); //txtURL loads URL
            var result = (IAsyncResult)request.BeginGetResponse(ResponseCallback, request); 
        } 
        catch (Exception ex) 
        { 
            MessageBox.Show(ex.Message); 
        } 
    } 

    private static void ResponseCallback(IAsyncResult result) 
    { 
        try 
        { 
            var request = (HttpWebRequest)result.AsyncState; 
            var response = request.EndGetResponse(result); 

            using (var stream = response.GetResponseStream()) 
            using (var reader = new StreamReader(stream)) 
            { 

                var contents = reader.ReadToEnd(); 

                textToBeDisplayed = contents; 
                if (textToBeDisplayed != "") 
                { 
                    Deployment.Current.Dispatcher.BeginInvoke(() => 
                    { 
                        System.Diagnostics.Debug.WriteLine(textToBeDisplayed); 
                    }); 
                } 
            } 
        } 
        catch (Exception ex) 
        { 
            Deployment.Current.Dispatcher.BeginInvoke(() => 
            { 
                MessageBox.Show(ex.Message); 
            }); 
        } 
    } 

【问题讨论】:

  • 你能展示你用来检索数据的代码吗?您是否收到任何异常或 HTTP 状态代码?如果是,是哪一个。
  • 没有任何例外。我只从我提供的任何 URL 中得到部分响应。
  • 你有试过的网址吗?我已经复制了您的代码(仅从您的私有方法中删除了 static 关键字)并且可以访问一个 url 并获取整个页面。
  • 不,即使在删除静态之后,我也导航到 google.com,我得到的只是页面上 html 标记的一半。我无法在此处将其添加到评论中。
  • 你能用 Fiddler 查看实际响应中的内容吗?

标签: windows-phone-7 httpwebrequest webclient


【解决方案1】:
 WebClient wc = new WebClient();
 wc.DownloadStringCompleted += (s, e) =>
 {
      string Html = e.Result;
 };
 wc.DownloadStringAsync(new Uri("http://google.com"));

【讨论】:

  • 我仍然无法从 URL 下载 html 标记。使用更少的代码,我可以下载相同的部分输出。我使用 System.Diagnostics.Debug.WriteLine(Html);查看字符串的输出。这样做有错误吗?谢谢。
【解决方案2】:

我发现 System.Diagnostics.Debug.WriteLine 是罪魁祸首。我在代码中添加了一个断点,发现整个 html 标记都在字符串中可用。出于某种原因,System.Diagnostics.Debug.WriteLine 不会打印整个字符串。感谢您的帮助。

【讨论】:

    猜你喜欢
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多