ver sent see how google data chrome body .net browser postdata

.net - sent - ver post data en chrome



¿Cómo puedo acceder a PostData desde el controlador de eventos WebBrowser.Navigating? (2)

Esa funcionalidad no está expuesta por el control .NET WebBrowser. Afortunadamente, ese control es principalmente un envoltorio alrededor del control ''antiguo''. Esto significa que puede suscribirse al evento BeforeNavigate2 que conoce y ama (?) Usando algo como lo siguiente (después de agregar una referencia a SHDocVw a su proyecto):

Dim ie = DirectCast(WebBrowser1.ActiveXInstance, SHDocVw.InternetExplorer) AddHandler ie.BeforeNavigate2, AddressOf WebBrowser_BeforeNavigate2

... y haz lo que quieras con PostData dentro de ese evento:

Private Sub WebBrowser_BeforeNavigate2(ByVal pDisp As Object, ByRef URL As Object, _ ByRef Flags As Object, ByRef TargetFrameName As Object, _ ByRef PostData As Object, ByRef Headers As Object, ByRef Cancel As Boolean) Dim PostDataText = System.Text.Encoding.ASCII.GetString(PostData) End Sub

Una advertencia importante: la documentación de la propiedad WebBrowser.ActiveXInstance establece que "Esta API admite la infraestructura de .NET Framework y no está destinada a ser utilizada directamente desde su código". En otras palabras: su uso de la propiedad puede romper su aplicación en cualquier momento en el futuro, por ejemplo, cuando la gente del Marco decide implementar su propio componente de navegador, en lugar de envolver el COM SHDocVw existente.

Por lo tanto, no querrá poner este código en nada que envíe a mucha gente y / o cualquier cosa que debería seguir funcionando para muchas versiones de Framework por venir ...

Tengo un formulario de Windows en Visual Studio 2008 usando .NET 3.5 que tiene un control WebBrowser en él. Necesito analizar PostData del formulario en el controlador de eventos Navegación antes de enviar la solicitud. ¿Hay alguna manera de llegar a eso?

El antiguo control de navegador win32 tenía un evento Before_Navigate que tenía PostData como uno de sus argumentos. No es así con el nuevo control .NET WebBrowser.


Versión C #

/// <summary> /// Fires before navigation occurs in the given object (on either a window or frameset element). /// </summary> /// <param name="pDisp">Object that evaluates to the top level or frame WebBrowser object corresponding to the navigation.</param> /// <param name="url">String expression that evaluates to the URL to which the browser is navigating.</param> /// <param name="Flags">Reserved. Set to zero.</param> /// <param name="TargetFrameName">String expression that evaluates to the name of the frame in which the resource will be displayed, or Null if no named frame is targeted for the resource.</param> /// <param name="PostData">Data to send to the server if the HTTP POST transaction is being used.</param> /// <param name="Headers">Value that specifies the additional HTTP headers to send to the server (HTTP URLs only). The headers can specify such things as the action required of the server, the type of data being passed to the server, or a status code.</param> /// <param name="Cancel">Boolean value that the container can set to True to cancel the navigation operation, or to False to allow it to proceed.</param> private delegate void BeforeNavigate2(object pDisp, ref dynamic url, ref dynamic Flags, ref dynamic TargetFrameName, ref dynamic PostData, ref dynamic Headers, ref bool Cancel); private void Form1_Load(object sender, EventArgs e) { dynamic d = webBrowser1.ActiveXInstance; d.BeforeNavigate2 += new BeforeNavigate2((object pDisp, ref dynamic url, ref dynamic Flags, ref dynamic TargetFrameName, ref dynamic PostData, ref dynamic Headers, ref bool Cancel) => { // Do some with PostData }); }