http获取请求超时

时间:2014-04-10 10:43:02

标签: php sockets http get

我正在尝试通过套接字发送http请求。我写了以下代码:

$sock = fsockopen('ooooo.ru', 80, $errno, $errstr, 5);
fputs($sock, "GET / HTTP/1.1\r\n");
fputs($sock, "Host: http://ooooo.ru/\r\n");
fputs($sock, "Content-type: text/html\r\n");
echo fgets($sock);

但我有超时错误。但我可以正确地通过浏览器看到ooooo.ru。为什么会这样?

1 个答案:

答案 0 :(得分:1)

您必须发送一个空行以指示HTTP请求标头的结尾,并且当您没有请求主体指定类型时,您不应发送内容类型。

fputs($sock, "Content-type: text/html\r\n");替换为fputs($sock, "\r\n");

主机也需要是主机名而不是URL。

fputs($sock, "Host: http://ooooo.ru/\r\n");替换为fputs($sock, "Host: ooooo.ru\r\n");

更好的是,停止尝试自己编写HTTP并使用cURL library