wie die Frage bereits sagt, ich versuche Digest-Authentifizierung in Android zu tun.
Bis jetzt habe ich die DefaultHttpClient
und es ist Authentifizierungsmethode (unter Verwendung von UsernamePasswordCredentials
und so weiter), aber es ist veraltet, da Android 5 und werden entfernt in Android 6.
Also ich bin wechseln von DefaultHttpClient
zu HttpUrlConnection
verwendet.
Jetzt versuche ich Digest-Authentifizierung zu erreichen, die als here erklärt ziemlich einfach funktionieren sollte:Digest-Authentifizierung in Android mit HttpURLConnection
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
Aber die getPasswordAuthentication
wird nie aus irgendeinem Grund genannt.
Während meiner Suche nach diesem Problem fand ich verschiedene Beiträge, sagen Digest Authentifizierung wird nicht von der HttpUrlConnection
in Android unterstützt, aber diese Beiträge sind von 2010-2012, so dass ich nicht sicher bin, ob dies immer noch wahr ist. Auch verwenden wir HttpUrlConnection
mit Digest-Authentifizierung in unserer Desktop-Java-Anwendung, wo es funktioniert.
Ich fand auch einige Beiträge, über OkHttp
sprechen. OkHttp
scheint von Android unter der Haube (um genauer zu sein die HttpUrlConnectionImpl
) verwendet werden. Aber das HttpUrlConnectionImpl
ist ein bisschen seltsam, es ist nicht einmal in der Eclipse-Typ-Hierarchie angezeigt und ich bin nicht in der Lage, es zu debuggen. Auch sollte es ein com.squareup.okhttp.internal.huc.HttpUrlConnectionImpl
sein, während es in android ist ein com.android.okhttp.internal.http.HttpUrlConnectionImpl
.
So kann ich Digest Authentifizierung mit diesem HttpUrlConnection
in Android einfach nicht tun.
Kann mir jemand sagen, wie man das ohne externe Bibliotheken macht?
EDIT:
Der Server fordert für Digest-Authentifizierung:
WWW-Authenticate: Digest realm="Realm Name",domain="/domain",nonce="nonce",algorithm=MD5,qop="auth"
So Basis-Authentifizierung shouldn‘Arbeit, da der Server für Digest fragt.
Danke für diese Antwort. Ist es nur die Android-Version von 'HttpUrlConnection', die digest oder auch den Standard' java.net.HttpURLConnection' nicht unterstützt? – Springrbua
@Springrbua Nur auf Android wird es nicht unterstützt, zumindest meines Wissens. Vielleicht finden Sie Quellen für die JDK-Implementierung. – Nappy
Okay danke für deine Antwort. Ich bleibe jetzt beim 'DefaultHttpClient', aber es sieht so aus, als müsste ich früher oder später wechseln, also muss ich selbst Digest implementieren. Vielen Dank! – Springrbua