2013-08-03 4 views
1

나는 컬 (또는 get_file_contents)를 만들기 위해 노력하고있어 다음의 URL에서 내용을 얻을 반환 :PHP 컬 오류 505

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 

나는 두 가지 방법 (컬 및 get_file_contents)에서 얻을 모든 HTTP 505 오류가 있습니다. 내가 복사하고 문제없이 작동 파이어 폭스와 같은 브라우저에 대한 링크 ...

를 붙여 넣으면 그러나, 나는 라인 다른 HTTP 버전을 사용하여 컬을 강요 한 시도 마지막 것은 좋아한다 :

curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); 

없이 행운.

내 코드는 다음처럼 다른 URL의 작동 :

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는 왜 작동합니까?

답변

7

어리석은 URL 공백 ...이 문제가 수정되었습니다. PHP의 urlencode 기능을 살펴보십시오 :

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

당신에게

업데이트 감사드립니다.

2

필자는 cURL을 사용하여 요청 매개 변수를 완전히 URL 인코딩해야하므로 (예 : 공백이 + 등으로 변환되어야 함) Firefox가 사용자의 입장에서이 작업을 수행하고 있다고 가정합니다.

한 가지 방법은 인수를 http_build_query()으로 전달하는 것입니다.