Tratando de conectarse a un servicio web “autenticación implícita” usando HTTParty vs neto: HTTP (o etc.)
Pregunta
He estado tratando de conectarse a un servicio web que está utilizando la autenticación implícita.
Soy capaz de conectar en Safari usando usuario: password@service.site.com/endpoint
He tratado de Ruby y Rails para conectar usando HTTParty y Net: HTTP usando las opciones "básicas" autenticación", pero no he tenido suerte
.Se pregunta si el HTTParty / Neto: HTTP opción "Basic_Auth" no va a ser compatible con un servicio de "digerir autenticación"?
Si no es así, ¿hay otra manera que yo pueda conectar?
Solución
HTTParty autenticación básica aparentemente no es compatible con digest_auth. He encontrado esta neto: HTTP extensión: https://codesnippets.joyent.com/posts/show/ 1075 y escribo un método para manejar esto, con la ayuda de la gema grieta http: // github .com / jnunemaker / agrietarse :
def self.decode vin
url = URI.parse(APP_CONFIG[:vinlink_url])
Net::HTTP.start(url.host) do |http|
res = http.head(url.request_uri)
req = Net::HTTP::Get.new("/report?type=basic&vin=#{vin}")
req.digest_auth(APP_CONFIG[:vinlink_login], APP_CONFIG[:vinlink_password], res)
@response = http.request(req)
end
if @response.code == "200"
hash = Crack::XML.parse(@response.body).recursive_downcase_keys!.recursive_symbolize_keys!
end
end
Otros consejos
No se pudo llegar a los CodeSnippets vínculo anterior hoy, pero el código también está disponible aquí https: // gist.github.com/73102. He utilizado este éxito para la autenticación implícita, pero se encontró con problemas con la solicitud múltiple, consiguiendo errores 'nonce cliente rancios' - resueltos mediante la generación de un nuevo valor de uso único dentro de la función digest_auth cada vez que fue llamado. ¿No ha encontrado tanto en que miré, así que espero que esto ayude a alguien.