PHP fsockopen 400 Bad Request

У меня есть эта странная проблема, что я получаю 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

4

Решение

Ты пропускаешь \r\n\r\n который требуется после окончательного заголовка. В настоящее время у вас ничего нет после окончательного заголовка.

Добавьте его к результату соединения:

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

Кроме того, вам нужно использовать двойные кавычки вокруг \r\n потому что использование одинарных кавычек заставляет PHP воспринимать это буквально, а не как новую строку.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]