当前位置: 首页 > 知识库问答 >
问题:

如何使用Olingo或SDL OData框架在Java中使用OData4服务

蒲昊苍
2023-03-14

如果有人能给我提供一个简单的POST/GET示例,使用一个合适的POJO对象模型,那就太好了。

我有限的理解是,OData将关于实际对象模型的任何信息从编译时移动到客户端的运行时。我很乐意忽略这一点,并针对固定对象模型编写代码,因为我们使用的服务不会改变。

共有1个答案

公冶森
2023-03-14

客户端API的文档似乎被Olingo忽略了一点。但是在samples/Client的GIT存储库中有一个示例。

基本上,你要做以下几点:

String serviceUrl = "http://localhost:9080/odata-server-sample/cars.svc"
String entitySetName = "Manufacturers";

ODataClient client = ODataClientFactory.getClient();
URI absoluteUri = client.newURIBuilder(serviceUri).appendEntitySetSegment(entitySetName).build();
ODataEntitySetIteratorRequest<ClientEntitySet, ClientEntity> request = 
client.getRetrieveRequestFactory().getEntitySetIteratorRequest(absoluteUri);
// odata4 sample/server limitation not handling metadata=full
request.setAccept("application/json;odata.metadata=minimal");
ODataRetrieveResponse<ClientEntitySetIterator<ClientEntitySet, ClientEntity>> response = request.execute(); 
ClientEntitySetIterator<ClientEntitySet, ClientEntity> iterator = response.getBody();

while (iterator.hasNext()) {
     ClientEntity ce = iterator.next();
     System.out.println("Manufacturer name: " + ce.getProperty("Name").getPrimitiveValue());
}

查看Olingo代码库中的示例,以获得如何检索元数据、处理所有属性等的更多细节。

ClientComplexValue manufacturer = of.newComplexValue("Manufacturer");
manufacturer.add(of.newPrimitiveProperty("Name", of.newPrimitiveValueBuilder().buildString("Ford")));
ODataEntityCreateRequest<ClientEntity> request = client.getCUDRequestFactory().getEntityCreateRequest(absoluteUri, manufacturer);
ODataEntityCreateResponse<ClientEntity> response = request.execute();
 类似资料:
  • 我正在使用Olingo OData4库设置一个基本的OData提供程序。 到目前为止,我已经有了两个简单的实体,由两个属性组成,其中一个元素被定义为键。

  • 如何从代码entityTypes中注释如下: http://services.odata.org/odata/odata.svc/$metadata? Thanx。

  • EasyWeChat 是一个通用的 Composer 包,所以不需要对框架单独做修改,只要支持 Composer 就能直接使用,当然了,为了更方便的使用,我们收集了以下框架单独提供的拓展包: Laravel overtrue/laravel-wechat Symfony lilocon/WechatBundle Yii jianyan74/yii2-easy-wechat 适用于 EasyWeCh

  • QueryList无框架依赖,可以灵活的嵌入到任何项目中去。 在使用Composer管理的项目中安装 在非Composer管理的项目中安装 QueryList可以集成到任何框架中去使用,无需做任何修改,直接使用Composer安装到项目中去即可。 在使用Composer管理的项目中安装 如果项目框架本身就是使用Composer来管理包的话,直接在项目根目录执行Composer安装命令后,即可在项目

  • 目标:用 Docker 的方式搭建一个 Java Spring Boot 应用 本项目代码维护在 DaoCloud/docker-demo-spring-boot 项目中。 您可以在 GitHub 找到本项目并获取本文中所提到的所有代码文件。 前言 Java 一直是企业应用开发的大头,在互联网时代,在云计算、大数据的推动下,Java 又焕发了新生。 Spring Framework 是 Java

  • “Serializable”类中有一个称为字段的声纳规则应该是瞬态的或可序列化的。当您向类中添加一个不可序列化的字段时,会出现此问题。该规则规定: 例如,在负载情况下,大多数J2EE应用程序框架都会将对象刷新到磁盘,而据称具有非瞬态、非序列化数据成员的可序列化对象可能会导致程序崩溃,并为攻击者打开大门。 这对我来说似乎过时了。在有效的Java第三版中,当开发新软件时,序列化是不相关的。此外,从Ja