2015-01-30 4 views
4

У меня есть эта странная проблема: я получаю 400 Bad запроса в качестве ответа, и я абсолютно не знаю, что не так с заголовком. Вот мой код:PHP fsockopen 400 Плохой запрос

<?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); 

?> 

Любые идеи, что я делаю неправильно?

Благодаря

EDIT: Благодаря MrCode эта проблема была решена. Проблема здесь:

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

мне пришлось изменить его на:

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

Уведомление двойные кавычки и "\ г \ п \ г \ п"

Еще раз спасибо MrCode

+0

У меня была аналогичная проблема, когда я входил в заголовки с \ n. Это работало при подключении к более старым серверам, но с ошибкой работало с новыми серверами. Я предполагаю, что \ r \ n является стандартным, а более новые серверы были более строгими. – arlomedia

ответ

4

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

Append его джойна результат:

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

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

+0

Я тоже попробовал, и я попробовал это сейчас, но он все еще дает 400 ошибок. http://pastebin.com/MspRazgG и скриншот: http://puu.sh/feOE7/f86c88f098.png – Jason

+0

Использовать двойные кавычки не одиночные. – MrCode

+0

Ну, это неудобно .. теперь это сработало, большое спасибо. Я не знал, что это имеет значение. – Jason

Смежные вопросы