2015-01-30 12 views
4

나는 이상한 문제가있어서 400 개의 잘못된 요청을 응답으로 받고 있는데 헤더에 무엇이 잘못되었는지 전혀 모른다. 여기 내 코드 :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); 

?> 

내가 뭘 잘못하고 있는거야?

감사

편집이 문제를 MrCode 덕분에 해결되었다. 문제는 여기에 있었다 : MrCode

다시 한 번 감사드립니다 "\ n \ 연구 \ 없음 \ 연구"를

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

주의 따옴표와 :

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

내가로 변경했다

+0

나는 \ n을 사용하여 머리글에 가입하는 것과 비슷한 문제가있었습니다. 이전 서버에 연결할 때 작동했지만 최신 서버에서는 실패했습니다. 나는 \ r \ n이 표준이고 새로운 서버가 더 엄격하다고 생각한다. – arlomedia

답변

4

최종 헤더 이후에 \r\n\r\n이 누락되었습니다. 현재 최종 헤더 다음에 아무것도 없습니다.

조인 결과에 추가 :

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

는 또한, 당신은 작은 따옴표를 사용하여 새로운 라인으로 그대로하지 가져가 PHP를 유발하기 때문에 \r\n 주위에 따옴표를 사용해야합니다.

+0

나는 또한 그것을 시도하고 지금 시도했지만, 그것은 여전히 ​​400 오류를 제공합니다. http://pastebin.com/MspRazgG 및 스크린 샷 : http://puu.sh/feOE7/f86c88f098.png – Jason

+0

단일 인용이 아닌 큰 따옴표를 사용하십시오. – MrCode

+0

글쎄, 그건 어색해 .. 지금은 효과가있어, 정말 고마워. 나는 이런 종류의 것들이 중요하다는 것을 몰랐다. – Jason