首先,让我先说我完全没有使用 OData4j。
我正在构建一个需要从 Web 服务消耗一些 OData 的 android 应用程序(使用 Eclipse),我们已经有一个 iPad 应用程序可以正常工作,所以我认为 Web 服务是安全的。
所有 Web 请求都需要基本身份验证才能工作,我可以使用浏览器进行调用,以确认我使用的 URL 和凭据有效。
到目前为止,我有这个代码:
ODataConsumer.Builder builder = ODataConsumers.newBuilder(url);
builder.setClientBehaviors(new BasicAuthenticationBehavior(LoginUsername, LoginPassword));
ODataConsumer c = builder.build();
for(OEntity entity : c.getEntities("entry").execute()){
System.out.println(entity.getProperty("name").getValue().toString());
}
目前,Eclipse 调试器for
在线失败,推测可能是在.execute()
调用期间。调试器对我的帮助为零,在 LogCat 中看起来半相关的唯一行是:
编辑:在@JohnSpurlock 的回答之后,我走得更远了。总体上同样的问题,但出现了新的错误消息:
BadRequestException:请求 URI 无效。由于“文档”段指的是一个集合,因此它必须是请求 URL 中的最后一个序列。所有中间段必须引用单个资源。
还有其他消息,但主要与线程有关 - 值得注意的是,此方法是从AsyncTask中调用的,但是当AsyncTask
.
我的 XML 结果的审查和缩短版本(通过浏览器)如下所示:
<feed xml:base="http://a.example.com/OData.svc/"
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns="http://www.w3.org/2005/Atom">
<entry>
<name>one</name>
</entry>
<entry>
<name>two</name>
</entry>
</feed>