2011-12-30 22 views
7

El método parsed_response de HTTParty devuelve un hash si obtiene un código de respuesta 200, pero de lo contrario devolverá un String independientemente de si el servidor web devuelve una respuesta XML.HTTParty parsed_response devuelve una cadena en lugar de Hash

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

Amazon ofrecerá XML (explicando lo que salió mal) incluso en un algo 403.

Me estoy perdiendo?

Respuesta

8

HTTParty analiza su #parsed_response según el encabezado de la respuesta HTTP Content-Type. Verifique cuál es el valor para ese encabezado HTTP. En tu caso, querrás que sea application/xml.

+1

Esto me consiguió con webmock/httparty. Aplicación necesaria/tipo de contenido json – Andrew

+0

@Andrew Entonces, ¿cómo hacerlo bien con Webmock? No tengo idea de cómo obtener el JSON analizado. – Nowaker

+0

@Nowaker, no estoy seguro si resolvió esto, pero webmock incorrectamente le da el código _exact_ con el que debe tropezarse. Sin embargo, se omite incluir los encabezados de respuesta en los que se basa httparty para decidir cómo analizarlos. Añádelos y funciona bien. – xavdid

4

En caso de que alguien se sigue encontrando este problema hoy en día, get puede tomar un parámetro de formato, que puede ayudar a garantizar que su objeto HTTParty::Response es un hash:

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