Как добавить заголовок в ODataClient (Apache Olingo)? - PullRequest
0 голосов
/ 27 декабря 2018

У меня проблемы с доступом к сервису odata, потому что для этого требуется определенный заголовок, и я не могу добавить его непосредственно в ODataClient. Кто-нибудь знает, как решить мою проблему?

Код Psuedo:

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>

1 Ответ

0 голосов
/ 04 января 2019

ODataClient не имеет и API для установки дополнительных заголовков, возможно потому, что он напрямую не владеет HttpClient напрямую.Он принадлежит моему классу AbstractODataRequest, поэтому у вас есть API для установки дополнительных заголовков для каждого HTTP-запроса.

В вашем случае вы можете использовать метод addCustomHeader в ODataRequest.

Пример.Ваш пример кода может быть реорганизован следующим образом для достижения цели.

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();
...