【问题标题】:HTTParty parsed_response returns a String instead of HashHTTParty parsed_response 返回一个字符串而不是哈希
【发布时间】:2011-12-30 08:20:26
【问题描述】:

HTTParty 的parsed_response 方法在收到响应代码 200 时返回一个 Hash,否则无论网络服务器是否返回 XML 响应,它都会返回一个字符串。

HTTParty.get(post_url).parsed_response.class # Depends on response code

即使在 403 上,亚马逊也会提供 XML(解释出了什么问题)。

我错过了什么吗?

【问题讨论】:

    标签: ruby httparty


    【解决方案1】:

    HTTParty 根据 HTTP 响应的 Content-Type 标头解析其 #parsed_response。验证该 HTTP 标头的值是什么。在您的情况下,您希望它是 application/xml

    【讨论】:

    • 这让我有了 webmock/httparty。需要的应用程序/json 内容类型
    • @Andrew 那么如何正确使用 Webmock?我不知道如何获取解析后的 JSON。
    • @Nowaker,我不确定您是否解决了这个问题,但是 webmock 错误地为您提供了您应该使用的 exact 代码。但是,它忽略了包含 httparty 用来决定如何解析的响应标头。添加这些,它工作正常。
    • 我也从 Instagram 返回了 String 而不是 JSONcontent-type 显示它是“文本/html”。 example
    【解决方案2】:

    如果今天还有人遇到这个问题,get 可以带一个格式参数,它可以帮助您确保您的 HTTParty::Response 对象是一个哈希:

    url = HTTParty.get('http://domain.com', format: :json) # class is a Hash
    

    【讨论】:

    • 当内容类型标头没有时,这为我修复了它。
    猜你喜欢
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 2014-02-03
    • 2021-11-19
    • 2018-04-10
    • 2014-06-19
    相关资源
    最近更新 更多