0

我知道在以前的 VB 版本中,webbrowser 对象有一个 beforenavigate2 事件,它提供了对 webbrowser 的 postdata 的访问。

我进行了搜索和搜索,我认为该事件在 Visual Studio 2010 中被禁用。

关于如何从 webbrowser 对象中获取 postdata 的任何想法?

4

1 回答 1

0

我知道这是一个老问题,但我在同一个问题上苦苦挣扎,现在想在这里分享答案。这个答案的功劳归于 luchosrock,因为他是那个教我的人。

如果您有一个名为browser的System.Windows.Forms.WebBrowser对象的实例,您可以实现自己的处理程序来控制Navigating事件(在某种程度上等同于 BeforeNavigate2)并使用System.Net.WebRequestSystem .Net.WebResponse来自其中的对象:

Imports System.IO
Imports System.Net
Imports System.Windows.Forms
'[...]
Private Sub browser_Navigating(sender As Object, _ 
                               e As WebBrowserNavigatingEventArgs) _ 
                           Handles browser.Navigating

    Dim req As WebRequest
    Dim res As WebResponse
    Dim postDataStream As Stream
    Dim WebResponse As String = ""
    '[...]
    Try
        req = WebRequest.Create(e.Url.ToString)
        req.Method = "POST"
        res = req.GetResponse
        postDataStream = res.GetResponseStream
        Dim webStreamReader As New StreamReader(postDataStream)
        While webStreamReader.Peek >= 0
            WebResponse = webStreamReader.ReadToEnd
        End While
    Catch ex As Exception
        ' Exception control code here
    End Try
    '[...]
End Sub

这与从BeforeNavigating2事件中直接访问PostData对象不同,但我认为这是一个不错的选择。

如果这个答案不让您满意,那么在另一个问题中会有这个答案,其中解释了一种方法来直接处理旧的BeforeNavigate2事件。

于 2013-03-19T15:38:58.147 回答