我正在使用 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/