我正在尝试创建一个J2ME应用程序,该应用程序使用[HttpConnection](http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/io/HttpConnection.html)连接器与Web服务器通信。
[HttpConnection](http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/io/HttpConnection.html)
当我与WebServer交谈时,我必须使用基本HTTP身份验证进行身份验证,通常这种方式类似于
<http://username:password@website.com/rest/api/method>
但是在J2ME中,当我构造这种形式的url时,它不起作用。
我也尝试添加请求属性, hc = (HttpConnection) Connector.open(url); hc.setRequestProperty("User", "alagu"); hc.setRequestProperty("pass", "mypassword");
hc = (HttpConnection) Connector.open(url); hc.setRequestProperty("User", "alagu"); hc.setRequestProperty("pass", "mypassword");
但是没有用
有人以前做过基于j2me的HTTP身份验证吗?提前致谢。
可能是J2ME不支持基本身份验证,我可能错了。如果您想尝试仅在请求中设置身份验证标头,则可能需要与您使用的标头不同的标头。
从rfc:
为了获得授权,客户端在凭据中以base64 [7]编码的字符串内发送用单个冒号(“:”)字符分隔的用户ID和密码。 […] 如果用户代理希望发送用户标识“ Aladdin”和密码“ open sesame”,它将使用以下标头字段: Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
为了获得授权,客户端在凭据中以base64 [7]编码的字符串内发送用单个冒号(“:”)字符分隔的用户ID和密码。
[…]
如果用户代理希望发送用户标识“ Aladdin”和密码“ open sesame”,它将使用以下标头字段:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
因此,只需创建字符串“ User:Password”,base64对其进行编码,然后调用 setRequestProperty("Authorization", "Basic "+ encodedUserAndPass)
setRequestProperty("Authorization", "Basic "+ encodedUserAndPass)