【问题标题】:Fetch the data from web browser page to a wpf application从 Web 浏览器页面获取数据到 wpf 应用程序
【发布时间】:2012-06-01 09:22:37
【问题描述】:

我有一个 wpf 应用程序,其中我有一个文本框,我在其中输入 url,我正在 Web 浏览器控件中获取该网页。例如,如果我在 Web 浏览器控件中打开任何网页wpf 应用程序我想从该 Web 浏览器控件中获取所有文本并将其显示在文本框中。从该文本框中,我可以将其导出到任何文件中。我现在需要有关如何从 Web 浏览器控件中获取所有数据然后将其放入多行文本框中的信息。

【问题讨论】:

  • 为什么不直接使用 wdsl.exe? msdn.microsoft.com/en-us/library/7h3ystb6.aspx
  • No No.ok 如果我想获取任何其他网页数据如何做到这一点,让我们将其设为通用。我使用了网络浏览器控件。打开网页,但我无法从该控件中获取数据。
  • “我需要从浏览器上显示的 Web 服务 url 获取数据并创建一个 .wsdl 文件”适合。
  • IHTMLDocument2 htmlDocument = webBrowser1.Document.DomDocument as IHTMLDocument2; IHTMLSelectionObject currentSelection= htmlDocument.selection; if (currentSelection!=null) { IHTMLTxtRange range= currentSelection.createRange() as IHTMLTxtRange; if (range != null) { MessageBox.Show(range.text);我发现这个问题是没有选择数据不被获取。我不想选择任何我只想自己获取数据的东西
  • 我实际上想获取显示在 Web 服务 url 上的数据,所以我告诉了这一点。请帮我这样做。我找到了一个链接stackoverflow.com/questions/5099792/…,但它的帮助不是很充分,所以我在问一个问题

标签: c# http browser


【解决方案1】:

您可以使用 System.Net 中的 HttpWebRequest 和 HttpWebResponse 对象与网络服务器通信。

例如

string GetWebPage(string address)
{
    string responseText;
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);

    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    {
        using (StreamReader responseStream = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")))
        {
            responseText = responseStream.ReadToEnd();
        }
    }

    return responseText;
}

然后您可以使用以下方法设置文本框的文本:

myTextBox.Text = GetWebPage(address);

为了更好地为您的用户服务,您应该使网络请求异步,这样您就不会在数据下载时锁定 UI。您可以使用BackgroundWorkerThread 来执行此操作。

【讨论】:

  • 这是我收到的错误消息远程服务器返回错误:(401)未授权。
  • 401 错误是因为网站需要身份验证 - 例如用户名和密码。如果您在普通浏览器中访问该网站,它会提示您登录吗?
猜你喜欢
  • 2012-02-01
  • 2011-10-26
  • 2012-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多