0

この質問は次のようなものです: Freebase API 呼び出しはブラウザーで機能しますが、curl で失敗しますが、そこには回答がありません。

ブラウザで機能する次の URL があります。

https://www.googleapis.com/freebase/v1/search?query=Cee+Lo+Green&filter=%28all+type%3A%2Fmusic%2Fartist+created%3A%22The+Lady+Killer%22%29&limit=10&key=my_key_here

戻り値:

{"status":"200 OK","result":[{"mid":"/m/01w5jwb","id":"/en/cee_lo_1974","name":"Cee Lo Green","notable":{"name":"Singer-songwriter","id":"/m/016z4k"},"lang":"en","score":814.733643}],"cost":6,"hits":2}

ただし、PHP では、次のコードは機能しません。

<?php 
namespace com\voting;

class Freebase{

    public function query(){
        $service_url = 'https://www.googleapis.com/freebase/v1/search';  
        $params = array(
                'query' => 'Cee Lo Green',
                'filter' => '(all type:/music/artist created:"The Lady Killer")', 
                'limit' => 10,
                'key' => API_KEY  );
        $url = $service_url . '?' . http_build_query($params);
        $ch = curl_init();  
        curl_setopt($ch, CURLOPT_VERBOSE, true);
        curl_setopt($ch, CURLOPT_URL, $url);  
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $response = json_decode(curl_exec($ch), true);
        curl_close($ch);
        return $response;
    }
}
?>

curl をダンプすると、次のようになります。

array (size=22)
  'url' => string 'https://www.googleapis.com/freebase/v1/search?query=Cee+Lo+Green&filter=%28all+type%3A%2Fmusic%2Fartist+created%3A%22The+Lady+Killer%22%29&limit=10&key=my_key_here' (length=191)
  'content_type' => null
  'http_code' => int 0
  'header_size' => int 0
  'request_size' => int 0
  'filetime' => int -1
  'ssl_verify_result' => int 0
  'redirect_count' => int 0
  'total_time' => float 0.047
  'namelookup_time' => float 0
  'connect_time' => float 0.063
  'pretransfer_time' => float 0
  'size_upload' => float 0
  'size_download' => float 0
  'speed_download' => float 0
  'speed_upload' => float 0
  'download_content_length' => float -1
  'upload_content_length' => float -1
  'starttransfer_time' => float 0
  'redirect_time' => float 0
  'certinfo' => 
    array (size=0)
      empty
  'redirect_url' => string '' (length=0)

おそらく接続の問題だと思いましたが、通常の http URL を試してみたところ、curl はページのコンテンツを取得できることを示しました。

更新 1

投稿する前に宿題をするべきでした。Wireshark を使用すると、次のテキストが表示されます。

アラート メッセージ レベル: 致命的 (2) 説明: 不明な CA (48)

セットアップが正しく構成されていませんか?

4

2 に答える 2