Lenguaje de programación Visual Basic
Función Visual Basic para obtener el contenido de una URL. Permite conectarse a Internet, a la dirección indicada y obtener el contenido HTML de la misma, lo mostrará en un TextBox.
En la parte de declaraciones del formulario pondremos lo siguiente:
Option Explicit
'Esta función establece una conexión a Internet
Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" ( _
ByVal sAgent As String, _
ByVal lAccessType As Long, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, _
ByVal lFlags As Long) As Long
'Esta función abre una URL
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" ( _
ByVal hInternetSession As Long, _
ByVal lpszUrl As String, _
ByVal lpszHeaders As String, _
ByVal dwHeadersLength As Long, _
ByVal dwFlags As Long, _
ByVal dwContext As Long) As Long
'Esta función cierra la conexión a Internet de la sesión actual
Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
'Esta función lee el contenido de una URL y lo devuelve en un Buffer
Private Declare Function InternetReadFile Lib "wininet" ( _
ByVal hFile As Long, _
ByVal sBuffer As String, _
ByVal lNumBytesToRead As Long, _
lNumberOfBytesRead As Long) As Integer
Const scUserAgent = "API-Guide test program"
Const INTERNET_OPEN_TYPE_DIRECT = 1
Const INTERNET_OPEN_TYPE_PROXY = 3
Const INTERNET_FLAG_RELOAD = &H80000000
Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000
La función para obtener el conteido de una página web (URL) será la siguiente:
Function obtenerURL(Url As String) As String
Dim hOpen, hFile As Long
Dim sBuffer As String * 128
Dim Ret As Long
Dim str_Total
obtenerURL = ""
If Url <> vbNullString Then
'Abrimos una conexión a Internet
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, _
vbNullString, vbNullString, 0)
'Si devuelve 0 es por que no ha podido conectarse a Internet
If hOpen = 0 Then
MsgBox "No se ha podido conectar a Internet.", _
vbExclamation + vbOKOnly
Else
'Abrimos la URL
hFile = InternetOpenUrl(hOpen, Trim$(Url), vbNullString, _
ByVal 0&, INTERNET_FLAG_NO_CACHE_WRITE, ByVal 0&)
If hFile = 0 Then
MsgBox "No se ha podido obtener la URL.", _
vbExclamation + vbOKOnly
Else
'Lee los 128 primeros bytes de la URL
Call InternetReadFile(hFile, sBuffer, 128, Ret)
str_Total = sBuffer
While Ret <> 0
'Va leyendo de 128 en 128 bytes, hasta que Ret sea 0
Call InternetReadFile(hFile, sBuffer, 128, Ret)
str_Total = str_Total & Mid(sBuffer, 1, Ret)
DoEvents
Wend
End If
End If
'Cerramos el handle anterior (de la URL y de la conexión a Internet)
Call InternetCloseHandle(hFile)
Call InternetCloseHandle(hOpen)
'Mostramos el fichero en el control RichTextBox
obtenerURL = str_Total
End If
End Function
Y un ejemplo de uso de esta función:
txtURLCompleta.Text = obtenerURL(txtURL.Text)
Lógicamente, para que esto funcione, tendremos que añadir al formulario de Visual Basic:
- TextBox: para que el usuario introduzca la URL a descargar.
- CommandButton: un botón para que al pulsarlo obtenga el contenido de la URL.
- TextBox: para mostrar la URL obtenida, ha de tener la propiead Multiline=True.
Publicado el: 2009-08-28