Sockets, HTTP etc

Buenas,
Hasta ahora para trabajar con sockets utilizaba simplemente la libreria
‘socket’, y hace poco descubrí ‘net/http’ que también me va muy bien.

Pero cuando hago un GET con el net/http, almaceno el resultado en una
variable y luego compruebo si esa variable contiene una determinada
cadena, me da que no contiene esa cadena cuando estoy seguro que la
contiene. Por ejemplo, tengo un index.php subido a un host, y le hago el
GET a ese index, en el cual yo tengo escrito “Pagina en pruebas”, al
comprobar la respuesta ( if resp =~ /Pagina en pruebas/ ) Me dice que no
lo contiene, pero estoy seguro que si!

Por otra parte, cuando intento hacer una peticion GET mediante la
libreria ‘socket’, siempre me da error el servidor, y no se por que:

ejemplo de peticion:
req= "GET “, path, " / HTTP/1.1\nHost:” , host, “\n\n”

respuesta obtenida:
HTTP/1.1 400 Bad Request

Date: x

Server: x

Connection: close

Content-Type: text/html; charset=iso-8859-1

400 Bad Request

Bad Request

Your browser sent a request that this server could not understand.

The request line contained invalid characters following the protocol string.

Asi que no puedo solucionar el problema ( comprobar si un archivo de un
host contiene una cadena o no) ni con net/http ni con sockets, he estado
buscando sobre otras librerias para ello como ‘httpclient’ o
‘http-access2’
pero no las entiendo, no he ecnontrado documentacion decente para
ninguna de las dos…

saludos

2008/5/3 Diego G. [email protected]:

Pero cuando hago un GET con el net/http, almaceno el resultado en una
variable y luego compruebo si esa variable contiene una determinada
cadena, me da que no contiene esa cadena cuando estoy seguro que la
contiene. Por ejemplo, tengo un index.php subido a un host, y le hago el
GET a ese index, en el cual yo tengo escrito “Pagina en pruebas”, al
comprobar la respuesta ( if resp =~ /Pagina en pruebas/ ) Me dice que no
lo contiene, pero estoy seguro que si!

Si resp almacena la respuesta el cuerpo del mensaje esta en resp.body.

Por otra parte, cuando intento hacer una peticion GET mediante la
libreria ‘socket’, siempre me da error el servidor, y no se por que:

ejemplo de peticion:
req= "GET “, path, " / HTTP/1.1\nHost:” , host, “\n\n”

Por un lado parece que la peticion lleva dos paths entre GET y
protocolo, path y “/”.

Por otro un socket esta en binmode, no hay conversion de lineas. En
HTTP hay que separar las cabeceras con CRLF:

escrito sobre la marcha

CRLF = “\r\n”
req = “GET #{path} HTTP/1.1#{CRLF}Host: #{host}#{CRLF*2}”

Muchisimas gracias, problema resuleto :wink: