【发布时间】:2018-08-10 02:30:02
【问题描述】:
我的代码,
require 'net/http'
require 'json'
url = 'http://api.spotify.com/v1/search?type=artist&q=tycho'
uri = URI(url)
response = Net::HTTP.get(uri)
JSON.parse(response)
puts(response)
只要它是 http,它就可以工作,但它是 https 的实例它会失败并出现身份验证错误。
实际错误: SSL_connect returned=1 errno=0 state=error: 证书验证失败(错误号 1)(OpenSSL::SSL::SSLError)
在 Curl 中,我可以使用不安全模式,这有助于获得如下示例所示的结果:
curl --insecure -X GET -H "content-type: application/json" -H "Accept: application/json" -d '{}' "http://api.spotify.com/v1/search?type=artist&q=tycho"
“net/http”方法的等效方法是什么,我可以添加不安全或验证=false。
我将使用输出在 CHEF 中附加一个食谱。
注意:正确的 URI 会有所不同,而不是上面链接中提到的那个
非常感谢任何线索。
谢谢 阿尼什
【问题讨论】:
-
将
verify_mode选项设置为OpenSSL::SSL::VERIFY_NONE,如Net::HTTP.start(uri.host, uri.port, verify_mode: OpenSSL::SSL::VERIFY_NONE)。 -
你也可以依赖系统
curl:response = %x[curl --insecure ....]。 -
@mudasobwa,是否有您可以提供的示例脚本,很难调试您提供的解决方案。请
-
Net::HTTP上的文档页面充满了这些示例。
标签: ruby-on-rails ruby chef-infra chef-recipe cookbook