7

HttpConnectionコネクタを使用して Web サーバーと通信する J2ME アプリを作成しようとしています。

WebServer と話しているときは、基本的な HTTP 認証を使用して認証する必要があります。これは通常次のようになります。

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

しかし、J2ME でこの形式の URL を作成すると、うまくいきません。

request プロパティも追加してみましたが、 hc = (HttpConnection) Connector.open(url); hc.setRequestProperty("User", "alagu"); hc.setRequestProperty("pass", "mypassword");

しかし、うまくいきませんでした。

誰かが以前に j2me ベースの HTTP 認証を行ったことがありますか? 前もって感謝します。

4

3 に答える 3

11

J2ME は基本認証をサポートしていない可能性があります。私が間違っている可能性があります。自分でリクエストに認証ヘッダーを設定するだけの場合は、使用しているヘッダーとは異なるヘッダーが必要になる可能性があります。

RFCから:

許可を受け取るために、クライアントは資格情報の base64 [7] エンコード文字列内で、単一のコロン (「:」) 文字で区切られたユーザー ID とパスワードを送信します。

[...]

ユーザー エージェントがユーザー ID "Aladdin" とパスワード "open sesame" を送信する場合は、次のヘッダー フィールドを使用します。

 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

したがって、文字列「User:Password」を作成し、base64 でエンコードしてから呼び出します。setRequestProperty("Authorization", "Basic "+ encodedUserAndPass)

于 2009-06-04T15:29:48.363 に答える
3

信じられないほど、それは魅力のように機能します:

String url = "hppt://www.example.com";
HttpConnection hc = (HttpConnection) Connector.open(url);
hc.setRequestProperty("Authorization", "Basic "+ BasicAuth.encode("user", "password"));
于 2009-07-27T00:01:37.020 に答える
1

Bouncy Castle 暗号化ライブラリの Base64 Encoder/Decoder を使用しました。Java ME/J2ME API によって設定された多くの制限を克服するのに非常に強力です。これはオープンソースであり、Java ME と Android の両方で動作します。

于 2011-05-30T21:05:30.707 に答える