У меня есть эта странная проблема, что я получаю 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");
Обратите внимание на двойные кавычки и «\ r \ n \ r \ n»
Еще раз спасибо MrCode
Ты пропускаешь \r\n\r\n
который требуется после окончательного заголовка. В настоящее время у вас ничего нет после окончательного заголовка.
Добавьте его к результату соединения:
fputs($sock, join("\r\n", $header) . "\r\n\r\n");
Кроме того, вам нужно использовать двойные кавычки вокруг \r\n
потому что использование одинарных кавычек заставляет PHP воспринимать это буквально, а не как новую строку.
Других решений пока нет …