HTTP-Authentifizierung in J2ME
Frage
Ich versuche, eine J2ME App zu erstellen, die auf Web-Server mit HttpConnection
Anschluss spricht.
Als ich in die WebServer spreche, muss ich mit Basic-HTTP Auth authentifizieren, das geht normalerweise wie
http://username:password@website.com/rest/api/method
Aber in J2ME, wenn ich eine URL dieser Form konstruieren, funktioniert es nicht.
Ich habe versucht, auch das Hinzufügen Anfrage Eigenschaft,
hc = (HttpConnection) Connector.open(url);
hc.setRequestProperty("User", "alagu");
hc.setRequestProperty("pass", "mypassword");
aber hat nicht funktioniert.
Hat jemand vor J2ME HTTP Auth gemacht? Vielen Dank im Voraus.
Lösung
Es könnte sein, J2ME keine Unterstützung für die Basisauthentifizierung hat, könnte ich falsch sein. Wenn Sie versuchen wollen nur in der Anforderung die Authentifizierungskopfeinstellung selbst werden Sie wahrscheinlich brauchen einen anderen Header dann, was Sie verwenden.
Von der rfc :
Um Genehmigung zu erhalten, der Client den Benutzer-ID und das Passwort sendet, durch einen einzigen Doppelpunkt ( „:“) getrennt Zeichen innerhalb eines Base64 [7] codierte Zeichenfolge in den Anmeldeinformationen.
[...]
Wenn die User-Agent wünscht, den Benutzer-ID „Aladdin“ und das Passwort schicken „Sesam öffne dich“, würde es die folgenden Header-Feld verwenden:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
So erstellen Sie einfach die Zeichenfolge "Benutzer: Passwort", kodieren base64 es und dann setRequestProperty("Authorization", "Basic "+ encodedUserAndPass)
nennen
Andere Tipps
Unglaublich, es wirkt wie ein Zauber:
String url = "hppt://www.example.com";
HttpConnection hc = (HttpConnection) Connector.open(url);
hc.setRequestProperty("Authorization", "Basic "+ BasicAuth.encode("user", "password"));
Ich benutzte Hüpfburg Verschlüsselungsbibliothek Base64 Encoder / Decoder. Es ist sehr leistungsfähig in viele Begrenzungen von Java ME / J2ME-API zu überwinden. Es ist Open-Source und es funktioniert sowohl für Java ME und Android.