客户端 API 的文档似乎被 Olingo 忽略了。但是在示例/客户端的GIT 存储库中有一个示例。
基本上,对于 GET,您可以执行以下操作:
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 代码库中的示例,以获取有关如何检索元数据、处理所有属性等的更多详细信息。
要进行 POST,您可以执行以下操作。(请注意,这不是经过测试的代码,示例 Car 服务是只读的。)首先,您将数据构建为 ClientEntity。你做例如
ClientComplexValue manufacturer = of.newComplexValue("Manufacturer");
manufacturer.add(of.newPrimitiveProperty("Name", of.newPrimitiveValueBuilder().buildString("Ford")));
然后你发送 POST 请求
ODataEntityCreateRequest<ClientEntity> request = client.getCUDRequestFactory().getEntityCreateRequest(absoluteUri, manufacturer);
ODataEntityCreateResponse<ClientEntity> response = request.execute();
所以这不适用于 POJO 类 - 结果类型是 ClientEntity,它将数据呈现为名称/值映射。在 Olingo 上已经有关于该特定主题的另一个未回答的问题
- 为 OData 服务的客户端库创建强类型 POJO,
我建议我们转向那里跟进。