• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pedrotuga

Como extrair os cabeçalhos de uma resposta a um pedido http (ou outros)

7 mensagens neste tópico

Isto é um tutorial com uma linha de código:

têm que ter o curl instalado, quem usa linux provavelmente já o terá uma vaz que vem em tudo quanto é distribuições

curl -I http://portugal-a-programar.org/

o output deve ser qq coisa do tipo:

HTTP/1.1 200 OK
Date: Thu, 12 Jul 2007 22:59:29 GMT
Server: Apache
X-Powered-By: PHP/4.4.6
Content-Type: text/html

e é isto.

simples mas muito util

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
$h = fsockopen('www.portugal-a-programar.org', 80);

fwrite($h, "GET / HTTP/1.1\r\nHost: www.portugal-a-programar.org\r\nConnection: Close\r\n\r\n");
while(!feof($h)) $z .= fgets($h, 128);
fclose($h);

$z = explode("\r\n\r\n", $z, 2);
echo $z[0];

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pessoal, qualquer programa que receba pacotes por http obviamente guarda os headers em algum lado, se nao nao funcionava.

Até o vosso browser vo-los dá de alguma forma, é questão de os procurarem bem

A ideia deste micro-snippet é poder ver os headers de forma rápida no conforto da shell. Sem rodeios nem complicações.

djthyrax... não arranjas nada mais complicado que isso?

na verdade basta pedir a pagina com os cabeçalhos e procurar os primeiros dois \n\n e aplicar um explode, isto se quiseres usar php. Mas isso é coisa para duas linhas de código, ou mesmo uma.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

$h = fsockopen('www.portugal-a-programar.org', 80);

fwrite($h, "GET / HTTP/1.1\r\nHost: www.portugal-a-programar.org\r\nConnection: Close\r\n\r\n");
while(!strstr($z, "\r\n\r\n")) $z .= fgets($h, 128);
fclose($h);
echo $z;


Versão "interactiva":

if($argc < 2) die('Usage: php '.$argv[0].' endereco');
$x = explode("/", str_replace("http://", '', $argv[1]), 2);
$x[1] = '/'.$x[1];

$h = fsockopen($x[0], 80);
fwrite($h, "GET ".$x[1]." HTTP/1.1\r\nHost: ".$x[0]."\r\nConnection: Close\r\n\r\n");
while(!strstr($z, "\r\n\r\n")) $z .= fgets($h, 128);
fclose($h);

echo str_replace("\r\n\r\n", '', $z);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok... em php basta isto... não testei.

$page_pieces = explode("\n\n",file_get_contents($url));
echo $page_pieces[0];

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok... em php basta isto... não testei.

$page_pieces = explode("\n\n",file_get_contents($url));
echo $page_pieces[0];

Nop, o que separa headers do corpo do pacote são \r\n\r\n e não \n\n. E o file_get_contents() não retorna os headers.
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora