HTTP-аутентификация в J2ME

Я пытаюсь создать приложение J2ME, которое общается с веб-сервером с помощью коннектора HttpConnection.

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

http://username:[email protected]/rest/api/method

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

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

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

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


person Alagu    schedule 04.06.2009    source источник
comment
привет, Алагу, как ты решил эту проблему. Как вы сделали базовую аутентификацию, не могли бы вы дать мне идею, как сделать базовую аутентификацию. в j2me ... пожалуйста   -  person Mr. Sajid Shaikh    schedule 12.10.2011
comment
@SajidShaikh Я попробовал решение wds, и оно сработало.   -  person Alagu    schedule 03.11.2011


Ответы (3)


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

Из rfc:

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

[...]

Если пользовательский агент хочет отправить идентификатор пользователя «Aladdin» и пароль «open sesame», он будет использовать следующее поле заголовка:

 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

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

person wds    schedule 04.06.2009
comment
Чтобы сделать дело более интересным, J2ME не включает кодировщик Base64 в MIDP 2.0. Некоторые поставщики предоставляют свои собственные, поэтому будьте осторожны при их импорте (у Sun WTK есть, но он только в WTK). Судя по всему, вам лучше включить свой собственный, например: java.sun.com/docs/books/j2mewireless/examples/src/examples/ - person Steve Pomeroy; 17.06.2009

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

String url = "hppt://www.example.com";
HttpConnection hc = (HttpConnection) Connector.open(url);
hc.setRequestProperty("Authorization", "Basic "+ BasicAuth.encode("user", "password"));
person Community    schedule 27.07.2009

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

person Antoine Nzeyimana    schedule 30.05.2011