Problemas al usar VB para conectarse a Internet
Uso del Control de transferencia de Internet
El Control de transferencia de Internet implementa dos protocolos de Internet ampliamente utilizados: Transferencia de hipertexto Protocolo (HTTP) y Protocolo de transferencia de archivos (FTP). Protocolo de transferencia de hipertexto (HTTP) y Protocolo de transferencia de archivos (FTP). Con el control de Transferencia de Internet, puede conectarse a cualquier sitio web que utilice cualquiera de los protocolos y recuperar archivos a través del método OpenURL o Execute.
Posibles usos
Añade un navegador FTP a tu aplicación.
Cree una aplicación que descargue automáticamente archivos de sitios FTP públicos.
Analiza referencias gráficas en sitios World Wide Web y descarga sólo gráficos.
Muestra datos dinámicos obtenidos de páginas web en un formato personalizado.
Funcionamiento Básico
La funcionalidad del Control de Transporte de Internet depende del protocolo a utilizar. Dado que los dos protocolos admitidos funcionan de manera diferente, las acciones que se pueden realizar también dependen del protocolo utilizado. Por ejemplo, el método GetHeader solo se puede utilizar con el protocolo HTTP (documento HTML).
Sin embargo, algunos procedimientos son comunes a ambos protocolos. En el nivel más básico, para utilizar cualquiera de los protocolos, debe:
Establecer la propiedad AccessType en un servidor proxy legítimo.
Utilice una URL válida para llamar al método OpenURL.
Llame al método Execute usando una URL válida y un comando soportado por el protocolo.
Utilice el método GetChunk para obtener datos del búfer.
Establezca la propiedad AccessType: Utilice un servidor proxy
Para establecer cualquier tipo de conexión a Internet, debe determinar cómo está conectado su ordenador a Internet. Si está en una intranet, es posible que necesite proporcionar un servidor proxy para conectarse a Internet.
En resumen, un servidor proxy es el intermediario entre tu ordenador e Internet. Todas las computadoras de la intranet que necesiten conectarse a Internet deben pasar por un servidor proxy. El proxy es como un firewall entre la intranet e Internet, que bloquea a los usuarios finales ilegales y las solicitudes externas, protegiendo así la intranet de intrusiones.
Para encontrar el valor de la configuración de proxy en su computadora, siga estos pasos:
Nota Los siguientes pasos se aplican sólo a los sistemas Windows 95 y Windows NT(R) 4.0.
En la barra de tareas de tu ordenador, haz clic en Inicio.
En Configuración, haga clic en Panel de control.
Haz doble clic en el icono de Internet.
En el cuadro de diálogo Propiedades de Internet, haga clic en Conexión.
En Servidor proxy, asegúrese de que la casilla de verificación Conectar a través del servidor proxy esté seleccionada.
Si está seleccionado, haga clic en Establecer. En este cuadro de diálogo encontrará los nombres de los servidores proxy disponibles para varios protocolos. Si no se define un servidor proxy, comuníquese con el administrador del sistema para encontrar un servidor proxy disponible.
Si desea utilizar un servidor proxy que no aparece en el cuadro de diálogo, establezca la propiedad AccessType en icNamedProxy (2). Luego establezca la propiedad Proxy en el nombre del servidor proxy, como se muestra en el siguiente código:
Inet1.Proxy = "myProxyName"
Inet1.AccessType = icNamedProxy
Si, por otro lado, desea utilizar el servidor proxy predeterminado (determinado por el registro de la computadora), puede ignorar la propiedad Proxy y establecer AccessType en icUseDefault (0).
La siguiente tabla enumera los valores para la configuración AccessType:
Descripción del valor constante
icUseDefault 0 (predeterminado) se utiliza como valor predeterminado. El control utiliza la configuración predeterminada en el registro para acceder a Internet.
icDirect 1 se conecta directamente a Internet y los controles pueden conectarse directamente a Internet.
icNamedProxy 2 Servidor proxy con nombre. Indica que el control utiliza el servidor proxy identificado por la propiedad Proxy.
Llamar al método OpenURL
Después de configurar la propiedad AccessType, la operación más básica es llamar al método OpenURL utilizando una URL legal. Cuando se utiliza el método OpenURL, el resultado de la operación dependerá de la URL de destino. Transporte de Internet
'El nombre del control es "Inet1".
Text1.Text=Inet1.OpenURL("")
Por lo tanto, el control TextBox contendrá el código fuente HTML y debería verse similar a la siguiente imagen:
En este caso, la acción predeterminada devolverá el documento HTML en la ubicación URL. Sin embargo, si cambia la URL para que apunte a un archivo de texto, obtendrá el documento real. Por ejemplo, el siguiente código:
Text1.Text = Inet1.
OpenURL("ftp://ftp.microsoft.com/disclaimer.txt")
Obtendrá el texto real del archivo, como se muestra a continuación:
Sugerencia Cuando utilice el método OpenURL o Execute, no necesita establecer la propiedad del protocolo. Internet Transport Control lo establece automáticamente en el; protocolo identificado en la parte del protocolo de la URL.
Finalmente, puedes llamar al método OpenURL con una URL que contenga datos adicionales. Por ejemplo, muchos sitios web ofrecen la posibilidad de buscar en bases de datos. Para buscar en la base de datos, debe incluir un criterio de búsqueda en la URL que envía. Por ejemplo, el siguiente código llama a un motor de búsqueda llamado "search.exe" con la condición "find=Maui".
Atenuar strURL como cadena
strURL = _
"/cgi-bin/search.e xe?find=maui
Texto1 .Text = Inet1 El contenido que cumpla con las condiciones se sintetizará en un documento HTML y devolverá la información correspondiente.
Utilice el método OpenURL para guardar en el archivo
Si es necesario, obtengalo. a través del método OpenURL para guardar datos en un archivo, puede usar las declaraciones Open, Put y Close, como se muestra en el siguiente código. Este ejemplo primero pasa el archivo binario obtenido a la matriz de bytes y luego guarda los datos en. disco:
Dim strURL como cadena
Dim bData() como byte 'Variable de datos
Dim intFile como entero 'Variable de archivo disponible
strURL = _
"ftp ://ftp.microsoft.com/Softlib/Softlib.exe"
intFile = FreeFile() 'Establece intFile como un archivo no utilizado p>
' El resultado del método OpenURL es primero pasar una matriz de bytes,
' y guardar la matriz de bytes en el disco.
bData() = Inet1.OpenURL(strURL, icByteArray)
Abra "C:\Temp\Softlib.exe" para acceso binario Escriba _
como #intFile
Poner #intFile, , bData()
Cerrar #intFile
Se puede utilizar un proceso similar para escribir un archivo de texto en el disco, excepto que no más largo Se requiere una matriz de bytes y los datos se pueden guardar directamente en el archivo:
Dim strURL As String 'Cadena URL
Dim intFile As Integer 'Variable de archivo disponible
IntFile = FreeFile()
strURL = ""
Abrir "c:\temp\MSsource.txt" para salida _
Como # IntFile
Escribe #IntFile, Inet1.OpenURL(strURL)
Cierra #IntFile
Transferencias sincrónicas y asincrónicas
El método OpenURL transfiere datos de forma sincrónica. En este caso, la sincronización significa que no se puede realizar ningún otro proceso hasta que se complete la operación de transferencia. Por lo tanto, la transferencia de datos debe completarse antes de ejecutar cualquier otro código.
Los métodos de ejecución transfieren datos de forma asíncrona. Cuando se llama al método Execute, la operación de transferencia es independiente de otros programas. Por lo tanto, después de llamar al método Execute, se puede ejecutar otro código mientras se reciben datos en segundo plano.
¿Qué significa esto para los usuarios de Internet Transport Controls? En pocas palabras, utilizando el método OpenURL, puede obtener el flujo de datos directamente y guardarlo en el disco (como se mencionó anteriormente), o verlo directamente en un control TextBox (si los datos están en formato de texto). Por otro lado, si usa el método Execute para obtener datos, debe usar el evento StateChanged para monitorear el estado de conexión del control. Cuando se alcanza el estado apropiado, se llama al método GetChunk para obtener datos del búfer del control. Esta operación se analiza en detalle a continuación.
Uso del método Execute en el protocolo FPT
El método Execute requiere cuatro parámetros: url, operación, datos y requestHeaders. Por ejemplo, para obtener un archivo de una computadora remota, use el siguiente código:
Inet1.Execute "FTP://ftp.microsoft.com", _
"GET disclaimer .txt C:\Temp\Disclaimer.txt"
Si utiliza FTP para obtener archivos de un servidor FTP anónimo, debe estar familiarizado con los comandos específicos para recorrer el árbol de directorios del servidor y obtener archivos de él. a su disco duro local. Por ejemplo, para cambiar un directorio usando el protocolo FPT, use el comando "CD" e ingrese la ruta al directorio que desea cambiar.
Para las operaciones más comunes, como transferir archivos hacia y desde el servidor, Internet Transfer Control utiliza comandos iguales o similares a FTP en el método de ejecución. Por ejemplo, el siguiente código toma el comando "CD" como argumento del método Execute para cambiar la ruta:
El cuadro de texto 'txtURL contiene la ruta para abrir.
'El cuadro de texto txtRemotePath contiene la ruta a la que se cambiará.
Inet1.Execute txtURL.Text, "CD " & txtRemotePath.Text
Nota Cuando se utiliza el comando FTP en el método Execute, los parámetros data y requestHeaders no se utilizan. Todas las operaciones y sus parámetros se pasan como cadenas en los parámetros de operación y están separados por espacios. En la siguiente descripción, no confunda las entradas "archivo1" y "archivo2" con los parámetros de datos y requestHeaders.
La sintaxis para una operación FTP es:
Nombre de la operación archivo1 archivo2
Por ejemplo, para obtener un archivo, el siguiente código contiene el nombre de la operación (" fetch") y la operación Los dos nombres de archivo requeridos:
'Obtenga un archivo llamado "Disclaimer.txt" y cópielo en
' C:\Temp\Disclaimer.txt.
Inet1.Execute, _
"GET Disclaimer. txt C:\Temp\Disclaimer.txt"
La siguiente tabla enumera los comandos FTP admitidos por control:
Ejemplo de instrucciones de funcionamiento
CD archivo1 Cambiar directorio. Cambie al directorio especificado por archivo1. Ejecute "CD docs\mydocs"
CDUP para cambiar al directorio principal. Funcionalmente idéntico a "CD ..." Funcionalmente idéntico a "CD ...". Ejecute "CDUP"
DELETE file1 para eliminar el archivo especificado por file1. Ejecutar, "DELETE descartar.txt"
DIR [archivo1] Encuentra el directorio especificado por archivo1. Si no se especifica el directorio file1, la búsqueda se realiza en el directorio de trabajo actual. Utilice el método GetChunk para devolver datos. Ejecutar, "DIR /mydocs"
GET archivo1 archivo2 Obtiene el archivo remoto especificado por archivo1 y crea un nuevo archivo local especificado por archivo2. Ejecutar, _
"GET getme.txt C:\gotme.txt"
MKDIR file1 crea el directorio especificado por file1. La ejecución exitosa depende de los permisos del usuario en el host remoto. Ejecute, "MKDIR /myDir"
PUT archivo1 archivo2 copiará el archivo local especificado por archivo1 al archivo de host remoto especificado por archivo2. Ejecutar, _
"PUT C:\putme.txt /putme.txt"
PWD imprime el directorio de trabajo. Devuelve el nombre del directorio actual. Utilice el método GetChunk para devolver datos. Ejecute, "PWD"
SALIR para finalizar la conexión actual. Ejecutar, "SALIR"
RECV archivo1 archivo2 Igual que GET. Ejecutar, _
"RECV getme.txt C:\gotme.txt"
RENAME archivo1 archivo2 Se cambia el nombre del archivo. La ejecución exitosa depende de los permisos del usuario en el host remoto. Ejecute,
"RENAME old.txt new.txt"
RMDIR file1 para eliminar el directorio. La ejecución exitosa depende de los permisos del usuario en el host remoto. Ejecute "RMDIR oldDir"
ENVIAR archivo1 para copiar el archivo al sitio FTP. (Igual que PUT) Ejecutar, _
"SEND C:\putme.txt /putme.txt"
SIZE file1 Devuelve el tamaño del archivo especificado por file1.
Ejecute "SIZE /largefile.txt"
DESTACADOS Si el servidor proxy es un servidor proxy CERN, no se permiten conexiones FTP directas (utilizando el método Ejecutar). En este caso, para obtener el archivo, necesita usar el método OpenURL con las declaraciones Open, Put y Close, que se mencionó anteriormente en "Guardar en un archivo usando el método OpenURL". También puede utilizar el método OpenURL para obtener una lista de directorio llamando al método con el directorio de destino como URL.
Uso del método Execute en el protocolo HTTP
El protocolo HTTP permite a los clientes solicitar datos del servidor mediante los comandos GET, HEAD, POST y PUT. La siguiente tabla enumera estas operaciones:
Operación Descripción Ejemplo
GET Obtiene el archivo nombrado en la URL. Ejecute "" & _
"/default.htm", "GET"
HEAD para obtener solo el encabezado del archivo nombrado en el atributo URL. Al ejecutarse, "HEAD"
POST proporciona datos adicionales para respaldar la solicitud al host remoto. Ejecute, "POST", strFormData
PUT para reemplazar los datos en la URL especificada. Ejecutar, "PUT", "replace.htm"
Interfaz de puerta de enlace común y método de ejecución
Muchos sitios web ofrecen la posibilidad de buscar bases de datos. Esto se logra mediante la capacidad de enviar consultas a través del protocolo HTTP utilizando la interfaz de puerta de enlace común (CGI).
Aquí no se habla más de CGI. Sin embargo, si está familiarizado con CGI, puede utilizar el método Execute para crear una aplicación que simule el comportamiento de un sitio web en la World Wide Web. Por ejemplo, el siguiente código proporciona una cadena de consulta CGI típica:
/cgi-bin/find.e xe?find=Hangzhou
La misma consulta se puede enviar utilizando el método Execute , como se muestra a continuación:
Dim strURL como cadena, strFormData como cadena
strURL = "//www.yippee.com/cgi-bin/find.
strFormData = "find=Hangzhou"
Inet1.E xecute strURL, "POST", strFormData
Si desea que los resultados se envíen desde el servidor (como se muestra en la ejemplo anterior), debe usar el método GetChunk para obtener el documento HTML resultante
Usando el método GetChunk en el evento State
Al descargar datos desde la computadora remota, una conexión asíncrona. Cuando se establece el uso de la operación Obtener en el método Ejecutar, el servidor obtendrá el archivo solicitado. Cuando se obtenga el archivo completo, el parámetro de estado devolverá icResponseCompleted (12). los datos del búfer Un punto:
Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim vtData As Variant 'Data variable
Seleccione Case State.
'...No se proporcionan otros casos
Case icResponseCompleted '12
'Abre el archivo para escribir.
Abrir txtOperation para acceso binario _
Escribir como #intFile
'Obtiene el primer bloque de datos. NOTA: Especifique la matriz de bytes
' (icByteArray) para obtener el archivo binario.
vtData = Inet1.GetChunk(1024, icString)
Hacer mientras LenB(vtData) > 0
Poner #intFile, , vtData
'Obtén el siguiente fragmento.
vtData = Inet1.GetChunk(1024, icString)
Bucle
Poner #intFile, , vtData
Cerrar #intFile p>
Finalizar selección
End Sub
Iniciar sesión en el servidor FTP
Hay dos tipos de servidores FTP: públicos y privados. Los servidores públicos, como su nombre indica, están abiertos a todos. Por otro lado, nadie más que el usuario real del servidor puede iniciar sesión en un servidor privado. En ambos casos, el protocolo FTP requiere un nombre de usuario y contraseña. Estos dos parámetros se utilizan para autenticar al usuario y permitir (o no permitir) operaciones adicionales.
Para iniciar sesión en un servidor público, la práctica común es iniciar sesión como "anónimo" (UserName = "anonymous") y enviar el nombre de correo electrónico del usuario como contraseña. Sin embargo, este proceso se puede simplificar aún más utilizando Internet Transport Control. De forma predeterminada, si no se proporcionan valores de propiedad Nombre de usuario y Contraseña, el control enviará "anónimo" como nombre de usuario y el nombre de correo electrónico del usuario como contraseña.
Para iniciar sesión en un servidor privado, simplemente configure las propiedades Nombre de usuario, Contraseña y URL de forma adecuada y luego llame al método Execute, como se muestra en el siguiente ejemplo:
Usando Inet1
.URL = "ftp://ftp.someFTPSite.com"
.UserName = "John Smith"
.
. Contraseña = "mAuI&9$6"
.Ejecutar , "DIR" 'Regresar a este directorio.
.Ejecutar , "CLOSE" Cierra la conexión.
Finalizar con
Después de llamar al método Execute, la conexión FTP permanecerá abierta. Puede continuar usando el método Execute para otras operaciones FTP (como CD y GET) y, si la sesión está completa, use el método Execute para realizar una operación CLOSE para cerrar la conexión. También puede cerrar automáticamente la conexión cambiando las propiedades de la URL y llamando al método OpenURL o Execute, que cierra la conexión FTP actual y abre una nueva URL.