Я получаю пустой ответ от BLS на запрос к их API. Кроме того, $ http_response_header пуст.
Почему $ http_response_header будет пустым? При попытке через http вместо https в заголовке ответа отображается как минимум 301 редирект.
$url = 'https://api.bls.gov/publicAPI/v2/timeseries/data/';
$method = 'POST';
$query = array(
'seriesid' => array('CUSR0000SA0'),
"registrationkey" => "XXXXXX" ,
'startyear' => '2016',
'endyear' => '2018'
);
$pd = json_encode($query);
$contentType = 'Content-Type: application/json';
$contentLength = 'Content-Length: ' . strlen($pd);
$result = file_get_contents(
$url, null, stream_context_create(
array(
'http' => array(
'method' => $method,
'header' => $contentType . "\r\n" . $contentLength . "\r\n",
'content' => $pd ),
"ssl"=>array(
"cafile" => "C:/xampp/php/cacert.pem",
"verify_peer"=> true,
"verify_peer_name"=> true,
),
)
)
);
var_dump($http_response_header);
var_dump($result);
выход: массив (0) {} строка (0) ""






Вместо этого я попробовал curl и использовал следующее, чтобы вывести ошибку. Сервер отвечал с неизвестной версией SSL, потому что я использую старую версию PHP. Я обновил свой xampp и теперь получаю ожидаемые результаты.
$fp = fopen('/errorlog.txt', 'w');
curl_setopt($ch, CURLOPT_STDERR, $fp);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);