HTTP-аутентификация в J2ME - PullRequest
7 голосов
/ 04 июня 2009

Я пытаюсь создать приложение J2ME, которое общается с веб-сервером, используя разъем <a href="http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/io/HttpConnection.html" rel="noreferrer">HttpConnection</a>.

Когда я разговариваю с WebServer, я должен аутентифицироваться с использованием обычной HTTP-аутентификации, которая обычно выглядит как

<a href="http://username:password@website.com/rest/api/method" rel="noreferrer">http://username:password@website.com/rest/api/method</a>

Но в J2ME, когда я создаю URL этой формы, он не работает.

Я также попытался добавить свойство запроса, hc = (HttpConnection) Connector.open(url); hc.setRequestProperty("User", "alagu"); hc.setRequestProperty("pass", "mypassword");

но не сработало.

Кто-нибудь раньше выполнял HTTP-аутентификацию на основе j2me? Заранее спасибо.

Ответы [ 3 ]

11 голосов
/ 04 июня 2009

Это может быть J2ME не поддерживает базовую аутентификацию, я могу ошибаться. Если вы хотите попробовать установить заголовок аутентификации в запросе самостоятельно, вам, вероятно, понадобится другой заголовок, чем тот, который вы используете.

Из рфк :

Для получения авторизации клиент отправляет ИД пользователя и пароль, разделенные одним двоеточием (":") внутри base64 [7] закодированная строка в учетных данных.

[...]

Если пользовательский агент желает отправить ИД пользователя "Aladdin" и пароль "открыть сезам", это будет использовать следующее поле заголовка:

 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Так что просто создайте строку «Пользователь: Пароль», base64 закодируйте ее и затем вызовите setRequestProperty("Authorization", "Basic "+ encodedUserAndPass)

3 голосов
/ 27 июля 2009

Невероятно, это работает как шарм:

String url = "hppt://www.example.com";
HttpConnection hc = (HttpConnection) Connector.open(url);
hc.setRequestProperty("Authorization", "Basic "+ BasicAuth.encode("user", "password"));
1 голос
/ 31 мая 2011

Я использовал кодировщик / декодер Base64 криптографической библиотеки Bouncy Castle. Он очень эффективен в преодолении множества ограничений, установленных Java ME / J2ME API. Он с открытым исходным кодом и работает как для Java ME, так и для Android.

...