Вопрос

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

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

http://имя пользователя:пароль@сайт.com/rest/api/method

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

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

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

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

Это было полезно?

Решение

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

Из РФЦ:

Чтобы получить авторизацию, клиент отправляет идут и пароль, разделенный одним символом толстой кишки («:»), в пределах кодируемой строки Base64 [7] в учетных данных.

[...]

Если пользовательский агент желает отправить иид «Аладдин» и пароль «Открыть кунжут», он будет использовать следующее поле заголовка:

 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top