2011-12-30 9 views
7

Il metodo parsed_response di HTTParty restituisce un hash se si ottiene un codice di risposta 200 ma altrimenti restituirà una stringa indipendentemente dal fatto che il server Web restituisca una risposta XML.HTTParty parsed_response restituisce una stringa invece di Hash

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

Amazon fornirà XML (che spiega cosa è andato storto) anche su un qualcosa di 403.

Mi sto perdendo?

risposta

8

HTTParty analizza il suo #parsed_response in base all'intestazione Content-Type della risposta HTTP. Verificare qual è il valore per quell'intestazione HTTP. Nel tuo caso, vorrai che sia application/xml.

+1

Questo mi ha fatto con webmock/httparty. Applicazione richiesta/tipo di contenuto JSON – Andrew

+0

@Andrew Quindi, come farlo correttamente con Webmock? Non ho idea di come ottenere il JSON analizzato. – Nowaker

+0

@Nowaker, non sono sicuro di averlo risolto, ma webmock fornisce erroneamente il codice _exact_ con il quale dovresti eseguire lo stub. Trascura, tuttavia, di includere le intestazioni di risposta su cui httparty si basa per decidere come analizzare. Aggiungi quelli e funziona bene. – xavdid

4

Nel caso qualcuno sta ancora incontrando questo problema oggi, get può prendere un parametro di formato, che può aiutare a garantire il vostro oggetto HTTParty::Response è un hash:

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