我的代码:
$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= [{“mid”:null,“name”:null,“topic:mid | =“:[”/ m / 0gn30“,”/ m / 0tc7“]}]& callback = myfuncname& key = [key])[function.file-get-contents]:无法打开流:HTTP请求失败! HTTP / 1.0 400错误请求 在 59
的 [文件名] 中如果我将URL直接粘贴到浏览器中,我会得到结果,没有任何问题!所以我假设我正在调用该服务的方式?
答案 0 :(得分:1)
你是否在php.ini中将allow_url_fopen设置为“on”?你有没有设置cookie的原因?
答案 1 :(得分:1)
尝试使用curl,如下所示:
$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);