PHP cURL返回错误505

时间:2013-08-03 02:02:34

标签: php curl solr

我正在尝试让cURL(或get_file_contents)从以下网址获取内容:

http://localhost:8080/solr/select?q={!geofilt score=distance sfield=geo pt=20.570529,-100.408635 d=20}&sort=score asc&fq=restaurantes&defType=!edismax&wt=json&indent=true&start=0&rows=20&fl=*,score

我从两种方法(cURL和get_file_contents)得到的都是HTTP 505错误。但是,如果我将链接复制并粘贴到像Firefox这样的浏览器上,它可以正常工作......

我尝试的最后一件事是迫使cURL使用不同的HTTP版本,例如:

curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
没有任何运气。

我的代码适用于其他网址,例如:

http://localhost:8080/solr/select?q=restaurantes&defType=edismax&qf=category^20.0+name^10.0+keywords^10.0+address^2.0&wt=json&indent=true&start=0&rows=20&fl=*,score

明显的区别在于{,=,}等字符!在URL中。但是,为什么Firefox有效?

2 个答案:

答案 0 :(得分:8)

愚蠢的网址空间......这解决了它。

$qs = str_replace(' ', '+', $qs);

谢谢

更新:看看PHP的urlencode功能。

答案 1 :(得分:2)

我假设使用cURL,您需要对请求参数进行完全URL编码(因此空格转换为+等),并且Firefox会在幕后为您执行此操作。

一种方法是将您的参数传递给http_build_query()