31
Мар
2018

Как побороть ошибку с file_get_contents failed to open stream: HTTP request failed! HTTP/1.0 400 — https youtube?

Дообрый день.

Есть код:

$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);

ошибок не возникает, однако, как заставить заработать первоначальный код?

Источник: https://ru.stackoverflow.com/questions/807460/%D0%9A%D0%B0%D0%BA-%D0%BF%D0%BE%D0%B1%D0%BE%D1%80%D0%BE%D1%82%D1%8C-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D1%83-%D1%81-file-get-contents-failed-to-open-stream-http-request-fail

Тебе может это понравится...

Добавить комментарий