Pergunta

Eu estou tentando criar um aplicativo J2ME, que fala com servidor web usando o conector HttpConnection.

Quando eu estou falando com o servidor web, eu tenho que autenticar usando Básica HTTP auth, que normalmente vai como

http://username:password@website.com/rest/api/method

Mas, em J2ME, quando eu construir um url desta forma, ele não funciona.

Eu também tentei adicionar pedido de propriedade, hc = (HttpConnection) Connector.open(url); hc.setRequestProperty("User", "alagu"); hc.setRequestProperty("pass", "mypassword");

mas não funcionou.

Alguém já fez J2ME com base HTTP auth antes? Agradecemos antecipadamente.

Foi útil?

Solução

Poderia ser J2ME não tem suporte para autenticação básica, eu poderia estar errado. Se você quiser tentar apenas definir o cabeçalho de autenticação na solicitação se você provavelmente vai precisar de um cabeçalho diferente, então o que você está usando.

A partir da RFC :

Para receber a autorização, o cliente envia o ID de usuário e senha, separados por um único cólon ( ":") personagem, dentro de uma base 64 [7] string codificada nas credenciais.

[...]

Se o agente usuário deseja enviar o userid "Aladdin" e senha "Abre-te sésamo", ele usaria o seguinte campo de cabeçalho:

 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Então, basta criar a string "Usuário: Password", base64 codificá-lo e, em seguida, chamar setRequestProperty("Authorization", "Basic "+ encodedUserAndPass)

Outras dicas

Incrível, ele funciona como um encanto:

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

Eu usei do Castelo Insuflável biblioteca criptográfica Base64 codificador / decodificador. É muito poderoso para superar muitas limitações estabelecidas pelo Java ME / J2ME API. É open-source e funciona tanto para Java ME e Android.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top