android中的Restlet HTTP_DIGEST授权

Posted

技术标签:

【中文标题】android中的Restlet HTTP_DIGEST授权【英文标题】:Restlet HTTP_DIGEST authorization in android 【发布时间】:2013-05-20 18:33:36 【问题描述】:

android 上通过 Restlet 框架进行 HTTP_DIGEST 授权时遇到以下问题。

05-20 18:39:14.623:W/System.err(4584):Restlet 引擎不支持挑战方案 HTTP_DIGEST。 05-20 18:39:17.498: W/System.err(4584): 找不到任何支持 HTTP_Digest 挑战方案的助手。

在客户端执行并给出上述错误的部分代码

clientResource =new ClientResource("http://example.com/position");
try
clientResource.wrap(MailResource.class);
ChallengeResponse challengeResponse = new ChallengeResponse(ChallengeScheme.HTTP_DIGEST,
"1671046999",
"tiger");      
clientResource.setChallengeResponse(challengeResponse);
clientResource.get();

catch (Exception e)

e.printStackTrace();

通过浏览器检查了该资源,授权似乎没问题。

有什么建议吗?:)

Google 没有提供任何可用的东西。

干杯!

【问题讨论】:

【参考方案1】:

首先,您应该将 Restlet Android 版本中的 jar 文件 org.restlet.ext.crypto.jar 添加到您的 libs 文件夹中。但你可能已经这样做了。不幸的是,作为扩展提供的连接器和转换器的 Restlet 自动发现机制在 Android 中无法正常工作。这是因为 jars 在 apk 文件中重新打包并丢失了它们的元数据。因此,您必须手动配置您使用的扩展,例如支持 HTTP Digest 身份验证的扩展。

Engine.getInstance().getRegisteredAuthenticators().add(new HttpDigestHelper());

我能够重现您的问题,并且这行代码修复了它。

【讨论】:

以上是关于android中的Restlet HTTP_DIGEST授权的主要内容,如果未能解决你的问题,请参考以下文章

java容器都有哪些 restlet

如何使用 Restlet apis for JavaEE 检索在 Http Post 请求中发送的数据?

osgi (bndtools) 中的 Restlet 包无法启动。激活程序错误 com/sun/net/httpserver/HttpHandler

org.restlet.routing.Router 似乎不接受编码斜杠

restlet 2.3.5 org.restlet包导入eclipse出现的com.sun.net.httpserver类包找不到问题

我如何在RESTlet中加载和编辑客户资料?