PHP fsockopen 400 Bad Request

时间:2015-01-30 16:49:50

标签: php fsockopen

我有这个奇怪的问题,我收到400 Bad请求作为回复,我完全不知道标题有什么问题。这是我的代码:

<?php

$sock = fsockopen('IP ADDRESS', 80, $errno, $errstr);

$header = array(
    'GET / HTTP/1.1',
    'Host: stackoverflow.com',
    'User-agent: My Useragent',
    'Connection: Close'
);

fputs($sock, join('\r\n', $header));

while(!feof($sock))
{
    echo fgets($sock, 128);
    break;
}

fclose($sock);

?>

任何想法我做错了什么?

由于

编辑:感谢MrCode,这个问题已经解决了。问题在这里:

fputs($sock, join('\r\n', $header));

我不得不将其更改为:

fputs($sock, join("\r\n", $header)."\r\n\r\n");

注意双引号和&#34; \ r \ n \ r \ n&#34;

再次感谢MrCode

1 个答案:

答案 0 :(得分:4)

您在最终标题后缺少\r\n\r\n。目前,在最终标题之后你什么都没有。

将其附加到联接结果:

fputs($sock, join("\r\n", $header) . "\r\n\r\n");

此外,您需要在\r\n周围使用双引号,因为使用单引号会导致PHP按字面意思而不是新行。