Der Versuch, einen „Digest-Authentifizierung“ Web-Service zu verbinden mit HTTParty vs Net: HTTP (oder usw.)
Frage
Ich habe versucht, zu einem Web-Dienst zu verbinden, die eine Authentifizierung unter Verwendung verdauen.
Ich bin in der Lage in Safari verbinden mit Benutzern: password@service.site.com/endpoint
Ich habe versucht, in Ruby und Rails zu verbinden HTTParty und Net: ein. HTTP, um die "basic" Auth“Optionen, aber hatte kein Glück
Sie fragen sich, ob der HTTParty / Net: HTTP "Basic_Auth" Option wird nicht mit einem "verdauen Auth" Service kompatibel sein?
Wenn nicht, gibt es eine andere Art und Weise, dass ich verbinden könnte?
Lösung
HTTParty Grund Auth ist anscheinend nicht kompatibel mit digest_auth. Ich fand das Net: HTTP-Erweiterung: https://codesnippets.joyent.com/posts/show/ 1075 und ein Verfahren schreibe dies zu handhaben, mit Hilfe des Risses gem http: // github .com / jnunemaker / Riss :
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
Andere Tipps
Was den Codesnippets bekommen nicht in der Lage Link oben heute gegeben, aber Code ist auch hier verfügbar https: // gist.github.com/73102 . Ich dies für Digest-Authentifizierung erfolgreich verwendet haben, sondern lief in Probleme mit Mehrfachanfrage ‚Nonce Stale Client‘ Fehler bekommen - gelöst durch eine neue nonce innerhalb der digest_auth Funktion jedes Mal zu erzeugen es hieß. Haben Sie nicht viel finden auf, als ich sah, so hoffen, dass dies jemand hilft.