he conseguido hacer la peticion para paginas http
Código :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento sin título</title> </head> <body> <?php error_reporting(E_ALL); echo "<h2>Conexión TCP/IP</h2>\n"; /* Obtener el puerto para el servicio WWW. */ $puerto_servicio = getservbyname('www', 'tcp'); /* Obtener la direccion IP del host de destino. */ $direccion = gethostbyname('www.google.es'); /* Crear un socket TCP/IP. */ $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket < 0) { echo "socket_create() falló: motivo: " . socket_strerror($socket) . "\n"; } else { echo "OK.\n"; } echo "Intentando una conexión con '$direccion' en el puerto '$puerto_servicio'..."; $resultado = socket_connect($socket, $direccion, $puerto_servicio); if ($resultado < 0) { echo "socket_connect() falló.\nMotivo: ($resultado) " . socket_strerror($resultado) . "\n"; } else { echo "OK.\n"; } $entrada = "GET / HTTP/1.1\r\n"; $entrada .= "Host: index.html\r\n"; $entrada .= "Connection: Close\r\n\r\n"; $salida = ''; echo "Enviando petición HTTP HEAD..."; socket_write($socket, $entrada, strlen($entrada)); echo "OK.\n"; echo "Leyendo respuesta:\n\n"; while ($salida = socket_read($socket, 2048)) { echo $salida; } echo "Cerrando socket..."; socket_close($socket); echo "OK.\n\n"; echo("$direccion"); ?> </body> </html>
Pero para paginas https no soy capaz, he probado esto:
Código :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento sin título</title> </head> <body> <?php error_reporting(E_ALL); echo "<h2>Conexión TCP/IP</h2>\n"; /* Obtener el puerto para el servicio WWW. */ $puerto_servicio = "443"; /* Obtener la direccion IP del host de destino. */ $direccion = gethostbyname('https://ovc.catastro.meh.es'); /* Crear un socket TCP/IP. */ $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket < 0) { echo "socket_create() falló: motivo: " . socket_strerror($socket) . "\n"; } else { echo "OK.\n"; } echo "Intentando una conexión con '$direccion' en el puerto '$puerto_servicio'..."; $resultado = socket_connect($socket, $direccion, $puerto_servicio); if ($resultado < 0) { echo "socket_connect() falló.\nMotivo: ($resultado) " . socket_strerror($resultado) . "\n"; } else { echo "OK.\n"; } $entrada = "GET / HTTP/1.1\r\n"; $entrada .= "Host: /CYCBienInmueble/OVCBusqueda.aspx\r\n"; $entrada .= "Connection: Close\r\n\r\n"; $salida = ''; echo "Enviando petición HTTP HEAD..."; socket_write($socket, $entrada, strlen($entrada)); echo "OK.\n"; echo "Leyendo respuesta:\n\n"; while ($salida = socket_read($socket, 2048)) { echo $salida; } echo "Cerrando socket..."; socket_close($socket); echo "OK.\n\n"; echo("$direccion - $puerto_servicio"); ?> </body> </html>
pero me da este error
Conexión TCP/IP
OK. Intentando una conexión con 'https://ovc.catastro.meh.es' en el puerto '443'...
Warning: socket_connect() [function.socket-connect]: Host lookup failed [0]: El nombre solicitado es válido y se ha encontrado en la base de datos, pero no tiene asociados los datos correctos que se intentan resolver. in C:\AppServ\www\test3\https.php on line 30
OK. Enviando petición HTTP HEAD...
Warning: socket_write() [function.socket-write]: unable to write to socket [0]: No se ha permitido una petición para enviar o recibir datos ya que el socket no está conectado y no se ha proporcionado ninguna dirección, al realizar el envío en un socket de datagramas por medio de una llamada sendto. in C:\AppServ\www\test3\https.php on line 44
OK. Leyendo respuesta:
Warning: socket_read() [function.socket-read]: unable to read from socket [0]: No se ha permitido una petición para enviar o recibir datos ya que el socket no está conectado y no se ha proporcionado ninguna dirección, al realizar el envío en un socket de datagramas por medio de una llamada sendto. in C:\AppServ\www\test3\https.php on line 48
Cerrando socket...OK. https://ovc.catastro.meh.es - 443
Alguien me podria indicar como hacer, q fallo o algo