vb.NET WebRequest将aspx页面读取为字符串,访问被拒绝?

时间:2010-10-24 01:36:01

标签: html vb.net parsing asp.net webrequest

我正在尝试在VS2008中创建一个可执行文件,它将使用vb.NET函数将网页源代码读入字符串变量。问题是页面不是* .html而是* .aspx。

我需要一种方法来执行aspx并将显示的html变为字符串。

我想要阅读的页面是此类型的任何页面:http://www.realtor.ca/PropertyDetails.aspx?PropertyID=9620716

我已经尝试了以下代码,它适用于html页面,但是当我传入上面的aspx页面时,会为页面标题生成错误的源代码和“访问被拒绝”。

    Dim myReq As WebRequest = WebRequest.Create(url)

    Dim myWebResponse As WebResponse = myReq.GetResponse()

    Dim dataStream As Stream = myWebResponse.GetResponseStream()

    Dim reader As New StreamReader(dataStream, System.Text.Encoding.UTF8)

    Dim responseFromServer As String = reader.ReadToEnd()

有任何建议或想法吗?

1 个答案:

答案 0 :(得分:1)

从命令行运行wget时我得到同样的东西:

wget http://www.realtor.ca/PropertyDetails.aspx?PropertyID=9620716

我猜服务器依赖于在传递响应之前在浏览器中设置某些内容,例如一块饼干。您可能希望以下列方式尝试使用WebBrowser控件(您不必让它可见)(这可行):

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        AddHandler WebBrowser1.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf DocumentCompletedHandler)
        WebBrowser1.Navigate("http://www.realtor.ca/PropertyDetails.aspx?PropertyID=9620716")
    End Sub

    Private Sub DocumentCompletedHandler(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)
        Console.WriteLine(WebBrowser1.DocumentText)
    End Sub
End Class