1

私のコード:

$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,"topics:mid|=":[" /m/0gn30","/m/0tc7"]}]&callback=myfuncname&key=[key]) [function.file-get-contents]: ストリームを開くことができませんでした: HTTP 要求が失敗しました! HTTP/1.0 400 Bad Request in [file name]59

URL をブラウザに直接貼り付けると、問題なく結果が返されます。だから私はそれが私がサービスを呼んでいる方法だと思いますか?

4

2 に答える 2

1

php.iniでallow_url_fopenを「on」に設定していますか?クッキーを設定する理由はありますか?

于 2012-05-21T20:34:53.410 に答える
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);
于 2012-05-21T23:09:44.263 に答える