0

以前のバージョンの VB では、webbrowser オブジェクトには、webbrowser の postdata へのアクセスを提供する beforenavigate2 イベントがあったことを理解しています。

検索して検索しましたが、Visual Studio 2010 ではイベントが無効になっていると思います。

webbrowser オブジェクトから postdata を取得する方法について何か考えはありますか?

4

1 に答える 1

0

これは古い質問であることは知っていますが、同じ質問に苦労していたので、ここで答えを共有することを考えました. 彼は私にそれを教えてくれた人だったので、この答えのクレジットは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イベントを直接処理する方法が説明されています。

于 2013-03-19T15:38:58.147 に答える