ruby-on-rails - 尝试使用rails中的rest-client查询API

标签 ruby-on-rails rest-client

我正在使用 Rest-client(Google 搜索中最糟糕的名称)来查询 API。

这是我的代码:

def self.list
    request="http://#{URI.escape @@user}:#{URI.escape @@password}@webservicedomain.com/params/params/"
    Rails.logger.debug request
    response = RestClient.get request
    response.code
  end

它给我传递给 Rest Client 的请求,然后是 406 错误:

MyService.list
http://username:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e494859797938b9680a4938186978196928d8781808b89858d8aca878b89" rel="noreferrer noopener nofollow">[email protected]</a>/params/params/
RestClient::NotAcceptable: 406 Not Acceptable

奇怪的是,如果我在浏览器中使用该请求,它就可以正常工作。我认为这可能与该网络服务仅使用 HTML 应答有关,但我不确定如何更改它,并且测试客户端实际上没有文档。

对于初学者来说,查看其余客户端发送的请求的 header 非常有用。

我怎样才能让它发挥作用?

更新

检查后rest-client抛出的异常包含以下错误:

Invalid mime-type "*/*; q=0.5"

最佳答案

RestClient 文档(只要存在)是 here 。我不认为你的问题是 API 通过 HTML 进行响应。我的猜测是 RestClient 不理解您提供访问凭据的方式。尝试使用请求 header 来代替?

就我个人而言,我更喜欢 Faraday gem对于与 API 交互 - 向您展示实际发生的情况会更好,尤其是在出现错误时。

关于ruby-on-rails - 尝试使用rails中的rest-client查询API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19406839/

相关文章:

ruby-on-rails - Rails 3 - Devise Gem - 如何通过 CRUD 界面管理用户

ruby - Ruby 1.9.3-p392+ 中的 SSL 连接错误

ruby-on-rails - 将 restclient 与多部分帖子一起使用

ruby-on-rails - 如何使用 RestClient 进行 Rails 基本授权?

parameters - 带有请求参数的 RestTemplate GET 请求

ruby-on-rails - 使用 PDF 套件时出错

ruby-on-rails - 在cloud9中运行elasticsearch/searchkick的Searchkick::InvalidQueryError 400错误?

ruby-on-rails - ActiveRecords 数组转为 JSON

ruby-on-rails - 新项目配置

ruby-on-rails - 在 docker 中为 rails 应用程序 rest-client 启用 CORS