Дообрый день.
Есть код:
$url = 'https://www.googleapis.com/youtube/v3/videos';
$cn_match = 'www.googleapis.com';
// $url = 'https://stackoverflow.com/questions/';
// $cn_match = 'stackoverflow.com';
$data = array (
'key' => $api_key,
'part' => 'snippet',
'id' => $video_id
);
// use key 'http' even if you send the request to https://...
$options = array(
'http' => array( // text/plain
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'GET',
'content' => http_build_query($data)
)
, 'ssl' => array(
'verify_peer' => true,
'cafile' => '/SRV/php721/extras/ssl/' . "cacert.pem",
'ciphers' => 'HIGH:TLSv1.2:TLSv1.1:TLSv1.0:!SSLv3:!SSLv2',
'CN_match' => $cn_match,
'disable_compression' => true,
)
);
$scu = $url . '?' . http_build_query($data);
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
//$response = file_get_contents($scu);
//echo Debug::d($context);
//echo $scu;
echo Debug::d($response);
выполнение приводит к ошибке:
Warning: file_get_contents(https://www.googleapis.com/youtube/v3/videos): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in C:\SRV\vhosts\test.loc\html\tmp\youtube-api\ex1\t1.php on line 67
или попросту HTTP/1.0 400 Bad Request
если делать курлом, например, вот так:
$curlSession = curl_init();
curl_setopt($curlSession, CURLOPT_URL, "https://www.googleapis.com/youtube/v3/videos?part=snippet&id=$video_id&key=$api_key");
curl_setopt($curlSession, CURLOPT_BINARYTRANSFER, true);
curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true);
$jsonData = json_decode(curl_exec($curlSession));
curl_close($curlSession);
echo Debug::d($jsonData);
ошибок не возникает, однако, как заставить заработать первоначальный код?