R API 调用因不受信任的机构颁发的证书链而失败
R API call fails due to certificate chain issued by an authority that is not trusted
我才刚刚开始接触 API 水域,我正在尝试按照 this link 上的“发送简单请求”部分进行操作。执行时
github_api <- function(path) {
url <- modify_url("https://api.github.com", path = path)
GET(url)
}
resp <- github_api("/repos/hadley/httr")
我收到以下错误消息:
Error in curl::curl_fetch_memory(url, handle = handle) : schannel:
next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT
(0x80090325) - The certificate chain was issued by an authority that
is not trusted.
我尝试在我的机器上进行的大多数 API 调用都收到类似的错误消息,尽管调用
GET("http://api.open-notify.org/astros.json")
取自this link愉快returns数据没有问题。在 google 中搜索错误消息 returns 很多与 R 无关的帖子,我无法确定我可以采取哪些故障排除步骤。
更新
我已经成功地在另一台机器上测试了调用,所以我的主机上存在一些 setting/configuration/firewall 障碍,这阻止了我进行一些但不是全部 API 调用。这可能与this issue有关。有没有办法确定根本原因并应用修复?
我能够通过使用转发代理来解决这个问题,它允许我的机器到达我公司防火墙之外的站点,如下所示(我已经模糊了 url 和端口,原因很明显):
proxy <- use_proxy( url = "http://myproxy"
,port = 9999
,auth = "basic")
github_api <- function(path) {
url <- modify_url("https://api.github.com", path = path)
GET(url, proxy)
}
resp <- github_api("/repos/hadley/httr")
希望遇到此问题的任何其他人都可以使用这样的转发代理。
我才刚刚开始接触 API 水域,我正在尝试按照 this link 上的“发送简单请求”部分进行操作。执行时
github_api <- function(path) {
url <- modify_url("https://api.github.com", path = path)
GET(url)
}
resp <- github_api("/repos/hadley/httr")
我收到以下错误消息:
Error in curl::curl_fetch_memory(url, handle = handle) : schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - The certificate chain was issued by an authority that is not trusted.
我尝试在我的机器上进行的大多数 API 调用都收到类似的错误消息,尽管调用
GET("http://api.open-notify.org/astros.json")
取自this link愉快returns数据没有问题。在 google 中搜索错误消息 returns 很多与 R 无关的帖子,我无法确定我可以采取哪些故障排除步骤。
更新
我已经成功地在另一台机器上测试了调用,所以我的主机上存在一些 setting/configuration/firewall 障碍,这阻止了我进行一些但不是全部 API 调用。这可能与this issue有关。有没有办法确定根本原因并应用修复?
我能够通过使用转发代理来解决这个问题,它允许我的机器到达我公司防火墙之外的站点,如下所示(我已经模糊了 url 和端口,原因很明显):
proxy <- use_proxy( url = "http://myproxy"
,port = 9999
,auth = "basic")
github_api <- function(path) {
url <- modify_url("https://api.github.com", path = path)
GET(url, proxy)
}
resp <- github_api("/repos/hadley/httr")
希望遇到此问题的任何其他人都可以使用这样的转发代理。