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授权的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 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类包找不到问题