Hacer un GET con sockets en lugar de usar "microsoft.xmlhttp"
(1/1)
OfTheVara:
Buenas,
Para actualizar la IP en no-ip.com mediante XML uso el objeto "microsoft.xmlhttp" con el siguiente código, el cual funciona correctamente.
Set XMLhttp = CreateObject("microsoft.xmlhttp")
'Url = "http://dynupdate.no-ip.com/dns?username=Pepito" & "&password=MyPass" & "&hostname=MyHostName"
XMLhttp.Open "get", Url, False
XMLhttp.SetRequestHeader "Pragma", "no-cache"
XMLhttp.SetRequestHeader "Cache-control", "no-cache"
Ahora bién, me gustaría hacer eso mismo pero usando un socket. Entiendo que primero debo conectarme a la dirección del servidor en el puerto 80:
Winsock.Close
Winsock.RemoteHost = "dynupdate.no-ip.com"
Winsock.RemotePort = 80
Winsock.Connect
Y luego enviar un string con toda la retahíla
Winsock.SendData Peticion
¿cómo sería ese string Peticion en base al código que he puesto arriba?
gracias
TickTack:
Necesitas formar manualmente la solicitud HTTP.
Código:
Dim Peticion As String
' Construir la solicitud HTTP
Peticion = "GET /dns?username=Pepito&password=MyPass&hostname=MyHostName HTTP/1.1" & vbCrLf
Peticion = Peticion & "Host: dynupdate.no-ip.com" & vbCrLf
Peticion = Peticion & "Connection: close" & vbCrLf
Peticion = Peticion & vbCrLf ' Fin de los encabezados
' Conectar y enviar la solicitud
Winsock.Close
Winsock.RemoteHost = "dynupdate.no-ip.com"
Winsock.RemotePort = 80
Winsock.Connect
Winsock.SendData Peticion
Tenés que reemplazar "Pepito", "MyPass" y "MyHostName" con tus credenciales y nombre de host adecuados. Además, esta solicitud está configurada para cerrar la conexión después de recibir la respuesta del servidor. Si necesitas manejar la respuesta del servidor, deberás configurar eventos en el control Winsock para recibir los datos de respuesta y procesarlos adecuadamente.
OfTheVara:
Cita de: TickTack en 17 Febrero 2024, 18:47 pm
Necesitas formar manualmente la solicitud HTTP.
Código:
Dim Peticion As String
' Construir la solicitud HTTP
Peticion = "GET /dns?username=Pepito&password=MyPass&hostname=MyHostName HTTP/1.1" & vbCrLf
Peticion = Peticion & "Host: dynupdate.no-ip.com" & vbCrLf
Peticion = Peticion & "Connection: close" & vbCrLf
Peticion = Peticion & vbCrLf ' Fin de los encabezados
' Conectar y enviar la solicitud
Winsock.Close
Winsock.RemoteHost = "dynupdate.no-ip.com"
Winsock.RemotePort = 80
Winsock.Connect
Winsock.SendData Peticion
Tenés que reemplazar "Pepito", "MyPass" y "MyHostName" con tus credenciales y nombre de host adecuados. Además, esta solicitud está configurada para cerrar la conexión después de recibir la respuesta del servidor. Si necesitas manejar la respuesta del servidor, deberás configurar eventos en el control Winsock para recibir los datos de respuesta y procesarlos adecuadamente.
Mil gracias. Funiona!! :)
Navegación