不支持HTTP / 1.1 505 HTTP版本

时间:2014-12-15 09:17:48

标签: php http file-get-contents

我正在运行PHP脚本来抓取网页。它适用于许多站点,但是有一个站点失败,返回错误“HTTP / 1.1 505 HTTP版本不支持”。

这是我脚本的一部分:

for($i = 0; $i < 1; $i++) {
    $page = file_get_contents("http://www.lovelybooks.de/stoebern/empfehlung/romantic fantasy/?seite=$i");
    // do something with $page
}

许多答案建议设置HTTP版本明确。我尝试过设置0.9,1.0和1.1,但它没有改变任何东西。实际上,标题似乎表明我的浏览器请求的HTTP版本和服务器期望的HTTP版本匹配:

回复标题:

HTTP/1.1 200 OK
Date: Mon, 15 Dec 2014 09:01:15 GMT
Server: Apache
X-Powered-By: PHP/5.4.35
Keep-Alive: timeout=2, max=200
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

请求标题:

GET /path/script.php HTTP/1.1
Host: www.mydoman.de
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:34.0) Gecko/20100101 Firefox/34.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Authorization: Basic MjQwMjE5Njc6MDcwNjIwMDc=
Connection: keep-alive
Cache-Control: max-age=0

还有什么可能是错的?

2 个答案:

答案 0 :(得分:13)

使用百分比编码替换URL中的空格:

    $page = file_get_contents("http://www.lovelybooks.de/stoebern/empfehlung/romantic%20fantasy/?seite=$i");

答案 1 :(得分:1)

我发现您在网址中使用了空格。那不行 为了解决这个问题,我将把url放在另一个变量中并对其进行编码:

$URL = urlencode("http://www.lovelybooks.de/stoebern/empfehlung/romantic fantasy/?seite=".$i);

file_get_contents($URL);