我想在运行Ubuntu 14.04 LTS的远程Linux服务器上从 R 中调用Companies House API。 我从终端开始R,正在使用' httr'打包并提出以下GET请求(使用' Paul + Dodd'作为示例搜索词):
call <- GET("https://api.companieshouse.gov.uk/search/companies?q=Paul+Dodd&items_per_page=50&start_index=1", authenticate("API_KEY_HERE", ""))
您可以在此处申请公司住宅API密钥并获取有关API的更多信息: https://developer.companieshouse.gov.uk/api/docs/index.html
API调用的响应应该是一个复杂的公司信息列表。
但是我收到以下错误:
curl :: curl_fetch_memory(url,handle = handle)出错: SSL连接错误
我尝试了set_config( config( ssl_verifypeer = 0L ) )
,偶尔会提供正确的响应对象,但通常会出现上述SSL错误或以下错误:
从对等方接收数据时失败
在我的Windows桌面(运行Windows 7)和我的Mac上运行R时,上述API调用有效。 API调用适用于多个IP地址。
我在远程服务器上安装了以下依赖项,并已升级和更新但错误仍然存在:
sudo apt-get upgrade
sudo apt-get update
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libssl-dev
最后,当我退出R并在远程服务器的终端中运行API调用时,我得到了正确的响应。我使用的命令如下:
curl -u"API_KEY_HERE": https://api.companieshouse.gov.uk/search/companies?q=Paul+Dodd&items_per_page=50&start_index=1
我怀疑R中的SSL连接错误可能是CA证书的问题,但是我对SSL的了解极限。您对我如何解决此问题有任何建议,以便我可以使用httr从R中调用API吗?
答案 0 :(得分:0)
经过一些试验和错误后,我发现安装了以下软件包: jsonlite,mime,curl(≥0.9.1),openssl(≥0.8),R6使用:
install.packages("package_name")
解决了这个问题。