BLS API PHP file_get_contents无响应

时间:2018-10-04 02:13:12

标签: php

我收到来自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)“”

1 个答案:

答案 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);