2

我正在使用rest-client(谷歌搜索中最糟糕的名称)来查询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:password@webservicedomain.com/params/params/
RestClient::NotAcceptable: 406 Not Acceptable

奇怪的是,如果我在浏览器中使用请求,它工作正常。我认为这可能与这个 web 服务只用 HTML 回答的事实有关,但我不确定如何改变它并且测试客户端并没有真正的文档。

对于初学者来说很棒的事情是查看发送的请求休息客户端的标头。

我怎样才能让它工作?

更新

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

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

2 回答 2

2

RestClient 文档(在它们存在的范围内)在这里。我不认为您的问题是 API 使用 HTML 响应。我的猜测是 RestClient 不了解您提供访问凭据的方式。尝试使用请求标头来代替?

就个人而言,我更喜欢使用Faraday gem来与 API 交互 - 向您展示实际发生的事情要好得多,尤其是在出现错误时。

于 2013-10-16T15:15:43.253 回答
0

虽然这已经晚了,仅供参考,这可以通过在请求中指定接受标头来解决。默认值似乎是“ / ; q=0.5, application/xml”。因此,您可以通过将标头的值设置为您期望的值来修复它

于 2015-09-28T15:27:49.183 回答