我正在使用Octave 4.0.0 for windows,并想从一个对所有公众开放的网页上下载股票价格。我使用以下调用:
data = urlread(https://www.netfonds.no/quotes/paperhistory.php?paper=API.A&csv_format=csv)但是,我得到以下错误消息:
urlread: Peer certificate cannot be authenticated with given CA certificates我已经在包括StackOverflow在内的互联网上搜索了这个错误信息,但我不理解那里给出的建议。
Q1:我的pc上是否缺少什么?如果是这样,我该怎么做?
Q2:我可以通过某种方式改变通话方式,以适应我电脑上的一些不足吗?
提前感谢您的帮助:)
发布于 2016-07-25 12:21:58
对于某些版本的Octave,这似乎是urlread()中的一个错误。对于我正在进行的一门课程,我们更改了以下内容:
responseBody = urlread(submissionUrl, 'post', params);
至
[code, responseBody] = system(sprintf('echo jsonBody=%s | curl -k -X POST -d @- %s', body, submissionUrl));
发布于 2015-06-06 22:12:17
尽管该页面是公开可用的,但连接是加密的。要使加密连接有意义,它必须使用您信任的密钥。典型的用户不会考虑是否信任它,它将决定这一点的工作留给操作系统或web浏览器(他们随后依赖于证书颁发机构)。我猜这是你的案子。
你得到的错误是因为你正在访问的网站使用的密钥是由urlread不“信任”的东西认证的。理想情况下,您应该有一个受信任证书列表,所有应用程序都将使用它。如果您的web浏览器信任它,但系统的其余部分不信任它,则说明存在配置问题。要么是您的web浏览器保留了自己的受信任证书列表,要么是libcurl ( urlread使用的库)找不到安装在您系统上的证书。
这个“配置”将是一个包含多个.pem文件的目录。此网站所需的特定证书最有可能命名为GlobalSign_Root_CA_-_R2.pem。
它在这里起作用:
octave> data = urlread ("https://www.netfonds.no/quotes/paperhistory.php?paper=API.A&csv_format=csv")
data = quote_date,paper,exch,open,high,low,close,volume,value
20150508,API,Amex,0.39,0.40,0.39,0.40,85933,34194
20150507,API,Amex,0.40,0.41,0.38,0.39,163325,64062
...发布于 2015-08-03 04:08:05
对于Windows,解决方法是在Windows控制台中使用curl命令。这可以由Octave通过系统命令调用。使用curl命令,您可以选择'--insecure‘选项,该选项也允许连接到没有证书的网站。仅当您确定网站是安全的时,才使用此选项。
sURLLink = 'https://www.netfonds.no/quotes/paperhistory.php?paper=API.A&csv_format=csv'
command=['curl --insecure ','"',sURLLink,'"'];
[status, output] =system(command);https://stackoverflow.com/questions/30683065
复制相似问题