首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我该如何测试法拉第的反应?

我该如何测试法拉第的反应?
EN

Stack Overflow用户
提问于 2016-07-31 11:22:12
回答 1查看 1.5K关注 0票数 1

我正在为JSON编写一个Ruby包装器。我期待一个特定类型的响应,当一个成功的帖子被发送到那个endpoint...but时,我不知道如何真正得到响应。

我这样用法拉第:

代码语言:javascript
复制
  @connection ||= Faraday.new do |f|
    f.url_prefix = "https://myapiurl.com/api/auth"
    f.adapter :net_http

    f.headers['User-Agent'] = "Some-Awesome-User-Agent"
    f.headers['Content-Type'] = content_type
    f.headers['Accept'] = api_version
    f.params['API-KEY'] = api_key if api_key

    f.response :json, content_type: /\bjson$/
  end

但是,当我执行@connection.post时,我一直收到一个SSL错误:

代码语言:javascript
复制
@connection.post
Faraday::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed

如果我没有弄错,那么一旦我可以修复SSL错误,我应该收到一些响应对象,然后我就可以对其进行操作了,对吗?

编辑1

我使用的是OpenSSL 0.9.8zh 14 Jan 2016,也是ruby 2.3.1rvm 1.27.0 (latest)

这就是我的Gemfile.lock的样子:

代码语言:javascript
复制
PATH
  remote: .
  specs:
    mygem (0.1.0)

GEM
  remote: https://rubygems.org/
  specs:
    coderay (1.1.1)
    diff-lcs (1.2.5)
    faraday (0.9.2)
      multipart-post (>= 1.2, < 3)
    faraday_middleware (0.10.0)
      faraday (>= 0.7.4, < 0.10)
    json (2.0.2)
    method_source (0.8.2)
    multipart-post (2.0.0)
    pry (0.10.4)
      coderay (~> 1.1.0)
      method_source (~> 0.8.1)
      slop (~> 3.4)
    rake (10.5.0)
    rspec (3.5.0)
      rspec-core (~> 3.5.0)
      rspec-expectations (~> 3.5.0)
      rspec-mocks (~> 3.5.0)
    rspec-core (3.5.1)
      rspec-support (~> 3.5.0)
    rspec-expectations (3.5.0)
      diff-lcs (>= 1.2.0, < 2.0)
      rspec-support (~> 3.5.0)
    rspec-mocks (3.5.0)
      diff-lcs (>= 1.2.0, < 2.0)
      rspec-support (~> 3.5.0)
    rspec-support (3.5.0)
    slop (3.6.0)

PLATFORMS
  ruby

DEPENDENCIES
  bundler (~> 1.11)
  faraday (~> 0.9.2)
  faraday_middleware (~> 0.10.0)
  json (~> 2.0, >= 2.0.2)
  mygem
  pry (~> 0.10.4)
  rake (~> 10.0)
  rspec (~> 3.0)
  rspec-expectations (~> 3.5)

BUNDLED WITH
   1.12.5
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-31 12:48:54

您得到此错误是因为您的SSL证书没有由受信任的证书颁发机构(CA)签名,或者根本没有签名。您可以将选项{ssl: {verify: false}}传递给Faraday.new,以强制其跳过CA验证。

代码语言:javascript
复制
@connection ||= Faraday.new(ssl: {verify: false}) do |f|
  # ...
end

这可以在购买SSL证书之前测试您自己的web api,但是在调用api时不要这样做,因为如果没有CA,您就无法判断该站点的证书是否是假的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38683435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档