小编典典

J2ME中的HTTP身份验证

java

我正在尝试创建一个J2ME应用程序,该应用程序使用[HttpConnection](http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/io/HttpConnection.html)连接器与Web服务器通信。

当我与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");

但是没有用

有人以前做过基于j2me的HTTP身份验证吗?提前致谢。


阅读 218

收藏
2020-11-01

共1个答案

小编典典

可能是J2ME不支持基本身份验证,我可能错了。如果您想尝试仅在请求中设置身份验证标头,则可能需要与您使用的标头不同的标头。

rfc

为了获得授权,客户端在凭据中以base64 [7]编码的字符串内发送用单个冒号(“:”)字符分隔的用户ID和密码。

[…]

如果用户代理希望发送用户标识“ Aladdin”和密码“ open sesame”,它将使用以下标头字段:

 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

因此,只需创建字符串“ User:Password”,base64对其进行编码,然后调用
setRequestProperty("Authorization", "Basic "+ encodedUserAndPass)

2020-11-01