我收到来自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);
输出: array(0){}字符串(0)“”
答案 0 :(得分:0)
我最终尝试卷曲,并使用以下命令输出错误。服务器正在响应一个未知的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);