我知道在以前的 VB 版本中,webbrowser 对象有一个 beforenavigate2 事件,它提供了对 webbrowser 的 postdata 的访问。
我进行了搜索和搜索,我认为该事件在 Visual Studio 2010 中被禁用。
关于如何从 webbrowser 对象中获取 postdata 的任何想法?
我知道在以前的 VB 版本中,webbrowser 对象有一个 beforenavigate2 事件,它提供了对 webbrowser 的 postdata 的访问。
我进行了搜索和搜索,我认为该事件在 Visual Studio 2010 中被禁用。
关于如何从 webbrowser 对象中获取 postdata 的任何想法?
我知道这是一个老问题,但我在同一个问题上苦苦挣扎,现在想在这里分享答案。这个答案的功劳归于 luchosrock,因为他是那个教我的人。
如果您有一个名为browser的System.Windows.Forms.WebBrowser对象的实例,您可以实现自己的处理程序来控制Navigating事件(在某种程度上等同于 BeforeNavigate2)并使用System.Net.WebRequest和System .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事件。