2009-06-04 62 views
7

我正在嘗試創建一個J2ME應用程序,該應用程序使用HttpConnection連接器與Web服務器通信。J2ME中的HTTP身份驗證

當我談論到web服務器,我有使用基本HTTP認證,通常是這樣

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

但在J2ME,當我建立這種形式的URL進行身份驗證,這不是」工作。

我也嘗試添加請求屬性, hc = (HttpConnection) Connector.open(url); hc.setRequestProperty("User", "alagu"); hc.setRequestProperty("pass", "mypassword");

,但沒有奏效。

有沒有人完成基於j2me的HTTP驗證之前?提前致謝。

+0

嗨你好Alagu,你是如何解決這個問題的。您如何完成基本身份驗證,您能否告訴我如何完成基本身份驗證。在j2me ...請 – 2011-10-12 10:19:54

+0

@SajidShaikh我試過wds的解決方案,它的工作。 – Alagu 2011-11-03 16:02:27

回答

11

它可能是J2ME不支持基本身份驗證,我可能是錯的。如果您想嘗試在請求中自己設置身份驗證標頭,則可能需要使用不同的標頭,然後使用您的標頭。

rfc

要接收授權,則客戶端發送用戶ID和密碼, 由單個冒號(「:」)分隔字符,一個base64內的[7] 編碼的字符串證書。

[...]

如果用戶代理希望發送用戶ID 「阿拉丁」 和密碼 「芝麻開門」,它將使用下列頭字段:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== 

所以只需要創建一個字符串「用戶名:密碼」,Base64編碼,然後調用setRequestProperty("Authorization", "Basic "+ encodedUserAndPass)

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編碼器/解碼器。它在克服Java ME/J2ME API設置的許多限制方面非常強大。它是開源的,適用於Java ME和Android。