Octave urlread将不会下载数据,因为;撒尿

Octave urlread将不会下载数据,因为;撒尿,octave,urlread,Octave,Urlread,我正在使用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 我已

我正在使用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,但不理解那里给出的建议

问题1:我的电脑有什么不足吗?如果是,我该怎么办?
问题2:我是否可以通过某种方式更改通话,以适应电脑上缺少的功能


提前感谢您的帮助:)

尽管该页面是公开的,但连接是加密的。要使加密连接有意义,它必须使用您信任的密钥。典型的用户不会考虑是否信任它,而是将决定这一点的工作留给操作系统或web浏览器(后者随后依赖于证书颁发机构)。我猜这是你的案子

您得到的错误是因为您正在访问的网站使用了一个由
urlread
不“信任”的东西认证的密钥。理想情况下,您将拥有一个可信证书列表,所有应用程序都将使用它。如果您的web浏览器信任它,但系统的其他部分不信任它,则说明您存在配置问题。您的web浏览器正在保留自己的受信任证书列表,或者libcurl(
urlread
使用的库)找不到系统上安装的证书

此“配置”将是一个包含多个
.pem
文件的目录。此网站所需的特定证书很可能命名为
GlobalSign\u Root\u CA\u-\u 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
...

对于Windows,解决方法是在Windows控制台中使用curl命令。这可以通过系统命令由倍频程调用。使用curl命令,您可以选择选项“--unsecure”,该选项还允许连接到没有证书的网站。仅当您确定网站安全时才使用此选项

sURLLink = 'https://www.netfonds.no/quotes/paperhistory.php?paper=API.A&csv_format=csv'
command=['curl --insecure ','"',sURLLink,'"']; 
[status, output] =system(command);

对于某些版本的八度音阶,
urlread()
中似乎有一个bug。对于我正在学习的课程,我们改变了这一点:

responseBody=urlread(submissionUrl,'post',params)


[code,responseBody]=system(sprintf('echo jsonBody=%s | curl-k-X POST-d@-%s',body,submissionUrl))

谢谢您的详细回答。!我在哪里可以找到我的web浏览器受信任证书列表,如果您提到的“GlobalSign_Root_CA_-_R2.pem”不在那里,我如何安装它,从哪里安装?@EspenDonali这将非常依赖于您的操作系统、浏览器和任何额外配置(如语言设置)。我帮不了你。至少我找到了解决问题的办法,尽管它不能解决问题。通过将地址的
https:
部分更改为
http:
,我可以下载数据。我假设他正在谈论的课程(因为它对我有用)是“机器学习”,在Coursera提供。包含第2周作业的上述代码行的文件是“../ex1/lib/submitWithConfiguration.m”。打开该文件,然后按住ctrl+f“urlread”键,并将该行替换为该答案中的一行。这似乎只与Coursera机器学习作业提交相关?