Я использую Java SAP Cloud SDK версии 3.11.0 и имею следующий запрос VDM:
final Destination destination = DestinationAccessor.getDestination("MyDestination");
Try<OutbDeliveryHeader> deliveryHeaderTry = Try.of(() -> new DefaultOutboundDeliveryV2Service()
.getOutbDeliveryHeaderByKey(deliveryDocument)
.execute(destination.asHttp()))
.onFailure(e -> logger.error("Failed to read delivery header " + deliveryDocument
+ ": " + e.getMessage(), e));
Мне нужно, чтобы этот запрос был выполнен для системы, настроенной в «MyDestination» с указать c клиент SAP. Поэтому я добавил дополнительное свойство sap-client
с соответствующим значением в пункте назначения.
К сожалению, однако, этот запрос возвращает следующую ошибку:
Unable to fetch the metadata : Failed to execute OData Metadata request.
При отладке SDK я обнаружил, что метод getEdm
из com.sap.cloud.sdk.odatav2.connectivity.cache.metadata.GuavaMetadataCache
никогда не добавляет информацию sap-client
как либо HTTP-заголовок, либо параметр URL-адреса для запроса метаданных. (Используя Postman, я смог показать, что для запроса метаданных действительно требуется sap-client
, в противном случае он не выполняется. Это объясняет, почему запрос VDM не выполняется в первую очередь. )
Теперь у меня вопрос, является ли это предполагаемым поведением или ошибкой в SDK?
Я подумал, что использование .withHeader("sap-client","600").onRequestAndImplicitRequests()
в моем запросе VDM решает мою проблему, но если я должен добавьте эту информацию к каждому запросу VDM, тогда почему я должен установить sap-client
в пункте назначения?
Или запрос метаданных OData предназначен для "agnosti c клиента", и именно поэтому sap-client
не добавлено в запрос метаданных в SDK?