我在头上。
在最广泛的层面上,我试图将Odata接口(interface)公开给使用Mule编写的服务公开的现有数据池。调用我的Mule服务时,如果我检测到URL是Odata格式,则希望将处理委托(delegate)给用Java编写的内容,然后将响应从该组件反馈给我的调用者。
我找到了Olingo和OData4j库。我的问题是这些都是从构建Web服务开始的。但这对我来说太上游了。我有一个Web服务。我需要了解的是我需要实现哪些组件才能将URL(我手头有)传递给Odata解析器,后者又将调用数据提供程序。
我对这项技术有点迷茫。谁能指出我一个非常基本的教程,清楚地描述了这一点。或者,他们可以给我几个类似的步骤:“您必须实现A,B和C,然后将您的URL传递到C.foo()”?
我已经尝试了这两个库的“入门”文档,但是它们都以“首先我们将实现Web服务”开头,并且(在我看来,至少)没有明确划定哪里以及纯Odata设置。
谢谢。
最佳答案
以下代码将帮助您开始使用通过OData(使用Apache Olingo)公开的服务中的数据。
URL url=new URL(/*your url*/);
HttpURLConnection conn=(HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty(HttpHeaders.ACCEPT,HttpContentType.APPLICATION_XML);
conn.connect();
InputStream content=conn.getInputStream();
Edm edm = EntityProvider.readMetadata(content, false);
之后,您可以使用EntityProvider类的静态方法来执行各种操作,例如读取,更新,写入
如果您使用的是odata4j,请输入以下代码
ODataConsumer demo_consumer= ODataConsumers.create(/*your URL*/);
Enumerable<EntitySetInfo> demo_entitySetList = demo_consumer.getEntitySets();
for (EntitySetInfo entitySet : entitySetList) {
System.out.println(entitySet.getHref());
}