2009-06-04 7 views
7

HttpConnectionコネクタを使用してWebサーバーと通信するJ2MEアプリケーションを作成しようとしています。 J2MEでのHTTP認証

私はWebServerのに話して、私はこのフォームのURLを構築する場合、通常

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

ようしかし、J2MEに行くHTTP基本認証を使用して認証する必要があり、それはdoesnの仕事。

私はまた、要求のプロパティを追加 hc = (HttpConnection) Connector.open(url); hc.setRequestProperty("User", "alagu"); hc.setRequestProperty("pass", "mypassword");

を試みたが、うまくいきませんでした。

以前は誰もj2meベースのHTTP認証を行っていませんか?前もって感謝します。

+0

こんにちはAlagu、この問題をどのように解決しましたか。どのように基本認証をしましたか、基本認証を行う方法を教えてください。 in j2me ... please –

+0

@SajidShaikh私はwdsのソリューションを試してみました。 – Alagu

答えて

11

J2MEで基本認証をサポートしていない可能性がありますが、間違っている可能性があります。要求に認証ヘッダーを設定する場合は、使用するヘッダーとヘッダーが異なる必要があります。 rfcから

:許可を受けるために

、クライアントが(「:」) は、1つのコロンで区切られた、ユーザーIDとパスワードを送信しBASE64内の文字、[7] エンコードされた文字列資格情報。

[...]

ユーザエージェントはユーザID「アラジン」とパスワード に「開けゴマ」を送信したい場合は、以下のヘッダフィールドを使用します。

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== 

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

+0

ありがとうwds、それは働いた! – Alagu

+4

問題をもっと楽しくするために、J2MEにはMIDP 2.0にBase64エンコーダが含まれていません。いくつかのベンダーは独自のものを提供していますので、注意してインポートしてください(SunのWTKにはWTKがありますが、WTKにしかありません)。見た目からは、あなた自身のものも含めて最高のものです: http://java.sun.com/docs/books/j2mewireless/examples/src/examples/netclient/BasicAuth.java –

3

を呼び出すと信じられないほど魅力的です:

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

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