2012-05-21 2 views
1

내 코드 :하는 Freebase MQL 읽기 서비스 및 PHP file_get_contents

$api_url = "https://www.googleapis.com/freebase/v1-sandbox/mqlread?query="; 
$query = $freebase_query."&callback=myfuncname"."&key=".$cfg['fbkey']; 

$opts = array(
    'http'=>array(
    'method'=>"GET", 
    'header'=>"Accept-language: en\r\n" . 
       "Cookie: foo=bar\r\n" 
) 
); 

$context = stream_context_create($opts); 
$json = file_get_contents($api_url.$query, false, $context, null); 
$display = $api_url.$query; 
$json_output = json_decode($json); 

오류 : 경고 : file_get_contents (https://www.googleapis.com/freebase/v1-sandbox/mqlread?query= [ {" 중반 " : 널 (null), " 이름 " : 널 (null), " 주제 : 중간 | = " : ["/m/0gn30 ", "/m/0tc7 "]}] & 콜백 = myfuncname & 키 = [키]) 기능 .file-get-contents] : 스트림 열기 실패 : HTTP 요청 실패! 나는 브라우저에 직접 URL을 붙여 넣을 경우 [파일 이름]에서 HTTP/1.0 400 잘못된 요청 라인 59

나는 아무 문제없이 다시 결과를 얻을! 그래서 나는 그 서비스를 호출하는 방식으로 가정합니다.

+0

이 스레드를 참조하십시오 : http://stackoverflow.com/questions/3535799/file-get-contents-failed-to-open-stream, HTTP : //stackoverflow.com/questions/1975461/file-get-contents-with-https –

답변

1

allow_url_fopen을 php.ini에서 "on"으로 설정 했습니까? 쿠키를 설정하는 이유가 있습니까?

+0

예 - 로컬 호스트에서 이미 "on"으로 설정되어 있습니다. 원격 서버에서는 php.ini 파일에 액세스 할 수 없다고 생각합니다. 해당 행의 유무에 관계없이 작동하지 않는 쿠키 비트는 무시하십시오. – txchou

1

같이, 대신 컬을 사용해보십시오 :

$freebase_query = array(array('id' => NULL, 'name' => NULL, 'topics:mid|=' => array('/m/0gn30','/m/0tc7'))); 
$api_url = 'https://www.googleapis.com/freebase/v1-sandbox/mqlread'; 
$query = $api_url . '?query=' . urlencode(json_encode($freebase_query)); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $query); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$json_data = json_decode(curl_exec($ch), true); 
curl_close($ch); 
+0

좋아요, 저는 cURL을 사용하고 있으며 응답이 없습니다. 공백. curl_error조차 오류를보고하지 않습니다. 실제로 어떻게 잘못되었는지 테스트하려면 어떻게해야합니까? – txchou

+0

내가 제공 한 코드는 화면에 아무 것도 울리지 않습니다. 당신이 원하는 것을 결정할 때까지 당신에게 달려 있습니다. 템플릿이 $ json_output에 어떤 데이터를 기대합니까? 그렇다면 해당 변수가 설정되어 있는지 확인하십시오. –