无法在Ruby on Rails中绕过HTTParty的SSL证书错误

时间:2016-08-09 18:56:24

标签: ruby-on-rails httparty

当我尝试使用HTTParty访问Web服务器时,我收到了SSL证书错误。这是我最初的错误。

  

SSL_connect返回= 1 errno = 0状态= SSLv3读取服务器证书B:   证书验证失败

我试图通过更新默认选项来纠正他。代码如下。

class Coursera
    include HTTParty
    base_uri 'https://api.coursera.org/api/catalog.v1/courses'
    default_params fields: "smallIcon,shortDescription", q: "search"
    format :json
    default_options.update(verify: false)

    def self.for term
      get("", query: { query: term})["elements"]
    end
end

然而,这导致了另一个错误,这让我感到困惑。

  

语法错误,意外的tIDENTIFIER,期待keyword_end   default_options.update(verify:false)

有人可以解释为什么会出现此错误以及如何绕过SSL以获取查询结果?

1 个答案:

答案 0 :(得分:0)

你得到syntax error, unexpected tIDENTIFIER, expecting keyword_end default_options.update(verify: false) 因为这行

HTTParty.get(get("", query: { query: term})["elements"])

最后有一个缺失的括号。实际上,您无需在get上致电HTTParty。取代

HTTParty.get(get("", query: { query: term})["elements"])

get("",query: { query: term})["elements"])

将您的文件与https://github.com/jhu-ep-coursera/fullstack-course1-module3/blob/master/app/models/coursera.rb

进行比较

现在回到SSl错误。

来自https://gist.github.com/mislav/5026283

  

您在谈论时可能会在Ruby 2.0中获得证书错误的原因> HTTPS是因为没有OpenSSL的默认证书包   (在构建Ruby时使用)信任。

您可以通过安装证书来解决错误,而不是禁用SSL。

要点还包含有关如何手动安装证书包的信息。

希望这有帮助!