Завиток, возвращающий пустой API

У меня есть эта функция, чтобы свернуть URL (на моем сайте codeigniter):

private function _curl_download($Url){

if (!function_exists('curl_init')){
die('Sorry cURL is not installed!');
}

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $Url);
curl_setopt($ch, CURLOPT_REFERER, "http://local.mywebsite.com");
curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
if(curl_errno($ch)){
echo 'Curl error: ' . curl_error($ch);
}
$output = curl_exec($ch);
print_r(curl_getinfo($ch));
curl_close($ch);

return $output;
}

Это должно вернуть мне JSON, но на самом деле это пустое …

$url = 'https://global.api.pvp.net/api/lol/static-data/euw/v1.2/champion?locale=fr_FR&api_key=myprivateapikey';
$info_champion = $this->_curl_download($url);
print_r($info_champion);

Вот что curl_getinfo($ch) верните мне:

Array
(
[url] => https://global.api.pvp.net/api/lol/static-data/euw/v1.2/champion?locale=fr_FR&api_key=mysecretapikey
[content_type] =>
[http_code] => 0
[header_size] => 0
[request_size] => 0
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.391
[namelookup_time] => 0
[connect_time] => 0.219
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 0
[speed_download] => 0
[speed_upload] => 0
[download_content_length] => -1
[upload_content_length] => -1
[starttransfer_time] => 0
[redirect_time] => 0
[redirect_url] =>
[primary_ip] => 52.8.176.206
[certinfo] => Array
(
)

[primary_port] => 443
[local_ip] => 192.168.1.104
[local_port] => 57748
)

Ссылка работает в моем браузере, так что это не проблема.

Я не понимаю, что может быть не так. Спасибо за вашу помощь.

1

Решение

По моему опыту при работе со связями более https вам нужно добавить больше параметров в запрос curl и получить копию cacert.pem имеется в наличии.

private function _curl_download($url){
/* edit path to suit environment */
$cacert='c:/wwwroot/cacert.pem';

/* download a copy from: http://curl.haxx.se/ca/cacert.pem */

if (!function_exists('curl_init')){
die('Sorry cURL is not installed!');
}

$ch = curl_init();
if( parse_url( $url,PHP_URL_SCHEME )=='https' ){
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, 1 );
curl_setopt( $curl, CURLOPT_CAINFO, realpath( $cacert ) );
}

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, "http://local.mywebsite.com");
curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);

if(curl_errno($ch)){
echo 'Curl error: ' . curl_error($ch);
}
$output = curl_exec($ch);
print_r(curl_getinfo($ch));
curl_close($ch);

return $output;
}
0

Другие решения

Благодаря @RamRaider я провел небольшой поиск и обнаружил, что должен добавить это:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE );

и все прошло правильно.

0

По вопросам рекламы [email protected]