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

[0] Índice de Mensajes