我在头上。

在最广泛的层面上,我试图将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());
    }

10-04 17:31