如何将 Header 添加到 ODataClient (Apache Olingo)?

How to Add Header to ODataClient (Apache Olingo)?

我在访问 odata 服务时遇到问题,因为它需要特定的 header,而且我无法直接在 ODataClient 上添加它,有人知道如何解决我的问题吗?

伪代码:

ODataClient client = ODataClientFactory.getClient(); 
client.addHeader("Header","123456789"); // <---- this code is what I am seeking
URI customersUri = client.newURIBuilder("uri/northwindmodel.svc")
          .appendEntitySetSegment("Customers").build();
ODataRetrieveResponse<ODataEntitySetIterator<ODataEntitySet, ODataEntity>> response
 = client.getRetrieveRequestFactory().getEntitySetIteratorRequest(customersUri).execute();

依赖关系:

<dependency>
    <groupId>org.apache.olingo</groupId>
    <artifactId>odata-client-core</artifactId>
    <version>4.5.0</version>
</dependency>

ODataClient没有和API设置额外的headers,可能是因为它直接没有直接拥有HttpClient。它拥有我的 AbstractODataRequestclass,因此您有 API 可以为每个 HTTP 请求设置额外的 headers。

在您的情况下,您可以使用 ODataRequest 中的 addCustomHeader 方法。

例如。您的示例代码可以通过以下方式重构以实现目标。

ODataClient client = ODataClientFactory.getClient(); 
// client.addHeader("Header","123456789"); // <---- this code is what I am seeking
URI customersUri = client.newURIBuilder("uri/northwindmodel.svc")
        .appendEntitySetSegment("Customers").build();

ODataEntitySetIteratorRequest<ClientEntitySet, ClientEntity> entitySetIteratorRequest =
        client.getRetrieveRequestFactory().getEntitySetIteratorRequest(qryUri);

entitySetIteratorRequest.addCustomHeader("Custom-Header-key", "Custom-Header-Value");

ODataRetrieveResponse<ClientEntitySetIterator<ClientEntitySet, ClientEntity>> response = entitySetIteratorRequest.execute();