CÓMO: Automatizar Internet Explorer para utilizar el método POST con los datos de los formularios

Seleccione idioma Seleccione idioma
Id. de artículo: 311293 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Un controlador de automatización, como Microsoft Visual Basic, puede automatizar Microsoft Internet Explorer para enviar datos mediante el método POST a un servidor HTTP, como Servicios de Microsoft Internet Information Server (IIS). En este artículo se explica cómo automatizar Internet Explorer para utilizar un método POST con los datos de un formulario desde una aplicación Visual Basic .NET. Aunque los ejemplos ilustran la automatización de toda la aplicación Internet Explorer, las mismas técnicas pueden aplicarse al control ActiveX del explorador Web cuando se aloja en una aplicación.

Más información

Hay varios métodos para enviar datos a un servidor HTTP. GET y POST son los dos más comunes. POST se suele usar para enviar datos de un formulario a un servidor HTTP cuando superan el límite máximo de transferencia permitido en el método GET. Normalmente, este límite es de 2 kilobytes (KB).

Internet Explorer muestra la interfaz IWebBrowser(App) para los controladores de automatización. La interfaz IWebBrowser(App) posee un método Navigate. En la sintaxis del Lenguaje de definición de interfaces (IDL, Interface Definition Language), una representación universal de la que se deriva tanto la sintaxis de Visual Basic como la de Visual C++, el método Navigate tiene una apariencia similar a la siguiente:
HRESULT Navigate([in] BSTR URL, [in] VARIANT* Flags,
[in] VARIANT* TargetFrameName, [in] VARIANT* PostData,
[in] VARIANT* Headers);
				
Para utilizar el método POST, sólo son relevantes los parámetros URL, PostData y Headers.

Para llamar al método Navigate y enviar con POST los datos de un formulario a un servidor HTTP, el parámetro URL debe especificar una dirección válida, el parámetro PostData debe contener un SAFEARRAY de bytes y el parámetro Headers debe incluir una BSTR que contenga el siguiente encabezado HTTP:
Content-Type: application/x-www-form-urlencoded
Este encabezado indica que los datos que se están enviando se codifican de acuerdo con las reglas establecidas en la especificación HTML.

Observe que el objeto window del Modelo de objetos de secuencias de comandos de Internet Explorer tiene también un método navigate. Este método navigate sólo aceptará una dirección URL y no se puede usar para enviar datos con POST a un servidor Web.

Pasos para implementar la técnica

  1. Guarde el siguiente código de Páginas Active Server (ASP) en un archivo, Navpost.asp, de un directorio situado en un servidor Microsoft Windows NT 4.0 o Microsoft Windows 2000 donde se use IIS versión 4.0 ó 5.0. El directorio debe ser reconocido por IIS como una raíz virtual con permisos de ejecución:
    <%@ Language=VBScript %>
     <HTML>
          <%
          cFlavor = Request("Flavor")
          cName = Request("FName")
          %>
          <BODY>
          Hello, <% =cName %>.
          One scoop of <% =cFlavor %> coming right up!
          </BODY>
     </HTML>
    					
  2. Inicie un nuevo proyecto EXE estándar en Visual Basic .NET. De manera predeterminada se creará Form1. Agregue los controles siguientes a Form1:
    Contraer esta tablaAmpliar esta tabla
    ObjetoNombreTítulo
    LabellblNameNombre
    LabellblFlavorSabor
    CommandButtoncmdSubmitEnviar
    ComboBoxcboFlavor
    TextBoxtxtName
  3. En el menú Proyecto, haga clic en Agregar referencia, en la ficha COM desplácese hacia abajo para seleccionar Microsoft Internet Controls (Shdocvw.dll) y haga clic en Seleccionar.
  4. Importe el espacio de nombres System.Text. La clase ASCIIEncoding proporciona un método para convertir cadenas en una matriz de bytes.
    Imports System.Text
  5. Incluya el código siguiente dentro de Class Form1 en Form1.vb:
    Private Sub cmdSubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSubmit.Click
    
            Dim ie As SHDocVw.InternetExplorer
            Dim vPost As Object
            Dim vHeaders As Object
            Dim cFlavor As String
            Dim cParamFlavor As String
            Dim cParamName As String
            Dim cPostData As String
            Dim cSeparator As String
    
            cFlavor = cboFlavor.Items(cboFlavor.SelectedIndex)
            cParamFlavor = "Flavor="
            cSeparator = ""
            cParamName = "FName="
    
            cPostData = cParamName & txtName.Text & cSeparator & cParamFlavor & cFlavor
    
            vHeaders = "Content-Type: application/x-www-form-urlencoded" + Chr(10) + Chr(13)
    
       	'Convert the string to post to an array of bytes.
            vPost = ASCIIEncoding.ASCII.GetBytes(cPostData)
    
    	'Create an instance of Internet Explorer and make it visible.
            ie = New SHDocVw.InternetExplorer()
            ie.Visible = True
            ie.Navigate2("http://<web server>/navpost.asp", , , vPost, vHeaders)
    
    End Sub
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
               cboFlavor.Items.Add("Vanilla")
               cboFlavor.Items.Add("Chocolate")
               cboFlavor.Items.Add("Strawberry")
               cboFlavor.SelectedIndex = 0
    
    End Sub						
  6. Modifique la dirección URL en la llamada al método Navigate, según corresponda. Salga de todas las instancias de Internet Explorer y, en el menú Ejecutar, haga clic en Inicio.
  7. Escriba su nombre en el cuadro Nombre, seleccione un sabor y haga clic en Enviar.

    Los datos del formulario Visual Basic se enviarán al servidor HTTP y la respuesta aparecerá en la ventana visible del explorador.

Referencias

Para obtener información adicional acerca de cómo usar WinInet para simular una solicitud POST en un formulario, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
165298 CÓMO: Simular una solicitud de envío de formulario con WinInet
Para obtener información adicional acerca de cómo usar URL Moniker para simular una solicitud POST en un formulario, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
165800 PostMon.exe muestra cómo usar URL Moniker para hacer un POST de los datos
311294 CÓMO: Alojar un control WebBrowser en Visual Basic .NET para utilizar el método POST con los datos de los formularios

Propiedades

Id. de artículo: 311293 - Última revisión: viernes, 23 de marzo de 2007 - Versión: 2.0
La información de este artículo se refiere a:
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Palabras clave: 
kbhowtomaster KB311293

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com