1

我正在使用网上找到的蜜蜂来轻松获取股票价格:

https://keithweaverca.medium.com/using-a-stock-market-api-4ce65b7c67ac

我多次调用它必须完成一个列表,我已经将它插入到一个函数中。有时随机结果会给出错误:

未定义的属性:stdClass:

    if($ticker != ''){
        $API_KEY = "F54SPPZ6VDOEO5TX";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=".$ticker."&apikey=" . $API_KEY));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $server_output = curl_exec ($ch);
        curl_close ($ch);
        $result = json_decode($server_output);
        
        $date = new DateTime(date ("Y/m/d"));
        $date ->sub(new DateInterval('P1D'));
        
        
        $dataForAllDays = $result->{'Time Series (Daily)'};
        $dataForSingleDate = $dataForAllDays->{$date ->format('Y-m-d')};
        echo $dataForSingleDate->{'1. open'} . '<br/>';
        
        
    } else{
        echo "Errore API ";
    }
}  ``` 

The error is on the $ dataForAllDays, the lines are for getting yesterday's day (they work)
4

1 回答 1

0

根据我对该代码的测试,当$ticker您使用的变量无效时会发生这种情况。

例如,尝试使用股票代码发出请求XXX会给我以下值$result

object(stdClass)#1 (1) {
  ["Error Message"]=>
  string(125) "Invalid API call. Please retry or visit the documentation (https://www.alphavantage.co/documentation/) for TIME_SERIES_DAILY."
}

在这种情况下,我会收到完整的警告消息:

Warning: Undefined property: stdClass::$Time Series (Daily)

这是有道理的,因为来自 API 的响应没有Time Series (Daily)字段。

解决此问题的方法是验证您从 API 接收到的响应的格式是否以您可以isset($result->{'Time Series (Daily)'})在继续之前处理的方式(例如,检查)。

于 2021-04-24T15:32:42.413 回答