2010-10-24 79 views
0

我想在VS2008中制作一个可执行文件,它将使用vb.NET函数将网页源代码读取到字符串变量中。问题在于该页面不是* .html,而是* .aspx。vb.NET WebRequest读取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() 

任何意见或建议?

+0

你能张贴创建'url'变量的代码? – JaredPar 2010-10-24 01:43:29

回答

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 
+0

谢谢,这似乎工作!我认为你需要cookie或其他东西是正确的。我可以看看。感谢您的帮助,WebBrowser DocumentText的想法会很好。欢呼声 – 2010-10-24 02:28:06

+0

如果答案可以接受,请将其标记为您接受的答案,以便答复者得到他/她的协助。 – 2011-05-19 19:46:20