【问题标题】:Issue with StreamReaderStreamReader 的问题
【发布时间】:2014-06-06 19:57:15
【问题描述】:

我正在编写代码,试图从在线 DNS 报告 (http://viewdns.info/dnsreport/?domain=google.com) 中获取 HTML,但我遇到了一些问题。我真正需要的 HTML 文件中的一行(第 231 行)是在大约 680 个字符后自行切断。但是,重要的行之后的所有行都正确读取。抓取 HTML 的代码如下所示,我尝试了两种不同的方式。 这是我尝试的第一种方式:

Public Function getWebResourceData(ByVal strURL As String) As String
    Dim webClient As New System.Net.WebClient
    Dim result As String = webClient.DownloadString("http://viewdns.info/dnsreport/?" &        TextBox1.Text)
    return result
End Function

这是第二个:

Public Function getWebResourceData(ByVal strURL As String) As String
    Dim rt As String = ""
    Dim wRequest As WebRequest
    Dim wResponse As WebResponse
    Dim SR As StreamReader
    wRequest = WebRequest.Create(strURL)
    wResponse = wRequest.GetResponse
    SR = New StreamReader(wResponse.GetResponseStream)
    rt = SR.ReadToEnd
    SR.Close()
    return rt
End Function

目前我真的不确定还有什么问题。我还尝试将结果保存到文本文件中以查看是否是问题所在,但这也是不正确的。我已经查看了字符串停止区域的十六进制代码,但没有任何异常。拆分发生在背靠背鳄鱼括号(显示为括号)之间:(/tr)(tr)

但是在整个 HTML 中有许多这样的标签集,它们没有问题。

【问题讨论】:

  • 要确定是否是网站的问题(不太可能是 BCL),您是否尝试过完全阅读不同的网站?
  • 这个问题在我正在测试的网站上继续发生:viewdns.info/dnsreport/?domain=google.com 无论你放入什么域

标签: vb.net streamreader webrequest webresponse


【解决方案1】:

您的两个函数都不会返回它们所读取的内容。我已经测试了第二个,它可以正常工作。

Sub Main
    Dim ret = getWebResourceData("http://viewdns.info/dnsreport/?domain=google.com")
    Console.WriteLine(ret.Length)
     ' Output = 21605
End Sub

Public Function getWebResourceData(ByVal strURL As String) As String
    Dim rt As String = ""
    Dim wRequest As WebRequest
    Dim wResponse As WebResponse
    Dim SR As StreamReader
    wRequest = WebRequest.Create(strURL)
    wResponse = wRequest.GetResponse
    SR = New StreamReader(wResponse.GetResponseStream)
    rt = SR.ReadToEnd
    SR.Close()
    return rt
End Function

【讨论】:

  • 我省略了退货声明。我一直在使用 return 语句并尝试在 MsgBox() 中显示结果,但它没有奏效。你在哪个网站上测试过?
  • 我已经使用LinqPAD 进行了测试,我认为使用 MessageBox 显示所有此类数据并不可靠。一个带有 Console.WriteLine 的简单控制台应用程序更适合这个
  • 我遇到的问题只是viewdns.info/dnsreport/?domain=google.com 代码获取了HTML,而不是全部。
  • 正是我上面测试过的。顺便说一句,我已将返回字符串的内容保存在磁盘上的一个文件中,然后用浏览器打开该文件。它有效(除了丢失的图像)
  • 我只是想通了...我使用的网址格式错误。非常感谢您的帮助!!!
猜你喜欢
  • 2016-11-29
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多