Получить операцию, которая привела к сбою набора изменений, или получить Content-ID пакетного ответа ⇐ JAVA
Получить операцию, которая привела к сбою набора изменений, или получить Content-ID пакетного ответа
Можно ли при работе с пакетом, содержащим набор изменений, получить Content-ID ответа пакета, если набор изменений не выполнен?
Предположим, у меня есть следующий код для создания пакета с набором изменений с помощью SDK. createDocument3 выдаст ошибку и приведет к сбою всего набора изменений:
BatchRequestBuilder BatchRequestBuilder = новый BatchRequestBuilder("/v1/"); BatchRequestBuilder.addChangeset(createDocument1, createDocument2, createDocument3)); BatchResponse пакетный ответ = пакетный запросBuilder.execute(назначение); Вот пример данных запроса и ответа, которые передаются в конечную точку.
[Чт, 29 февраля 22:06:11 2024] [10.0.0.2] [pid=4152] [Запрос] «POST /v1/$batch HTTP/1.1» Версия OData: 4.0 Тип контента: многочастный/смешанный; граница = batch_17d7a8c3-d3c7-42d4-b6a6-06ef1d975008 Длина контента: 2173 Хост:test-sapsvcl.aadds.teamson.com:50000 Соединение: Keep-Alive Пользовательский агент: Apache-HttpClient/4.5.14 (Java/21.0.2) Файл cookie:************************************************ ************************** Accept-Encoding:gzip,deflate X-Forwarded-Proto:https --batch_17d7a8c3-d3c7-42d4-b6a6-06ef1d975008 Тип контента: multipart/mixed;boundary=changeset_d3c4fa68-582a-46fd-8691-d24272625cda --changeset_d3c4fa68-582a-46fd-8691-d24272625cda Тип контента: приложение/http Кодирование передачи контента: двоичное Идентификатор контента: 1 POST-заказы HTTP/1.1 Принять: приложение/json Тип контента: приложение/json {"@odata.type":"#SAPB1.Document"..........} --changeset_d3c4fa68-582a-46fd-8691-d24272625cda Тип контента: приложение/http Кодирование передачи контента: двоичное Content-ID: 2 POST-заказы HTTP/1.1 Принять: приложение/json Тип контента: приложение/json {"@odata.type":"#SAPB1.Document"..........} --changeset_d3c4fa68-582a-46fd-8691-d24272625cda Тип контента: приложение/http Кодирование передачи контента: двоичное Content-ID: 3 POST-заказы HTTP/1.1 Принять: приложение/json Тип контента: приложение/json {"@odata.type":"#SAPB1.Document"..........} --changeset_d3c4fa68-582a-46fd-8691-d24272625cda-- --batch_17d7a8c3-d3c7-42d4-b6a6-06ef1d975008-- [Чт, 29 февраля, 22:06:11 2024 г.] [10.0.0.2] [pid=4152] [Ответ] «POST /v1/$batch HTTP/1.1» Код состояния: [200 ОК] Дата:Чт, 29 февраля 2024 г., 22:06:11 по Гринвичу Сервер: Апач Версия OData: 4.0 Длина контента: 569 Тип контента: многочастный/смешанный; граница = пакетный ответ_hKXEHg8m-qSXb-TCW6-dl3M-4r2H6qxgAbaG --batchresponse_hKXEHg8m-qSXb-TCW6-dl3M-4r2H6qxgAbaG Тип контента: приложение/http Кодирование передачи контента: двоичное Content-ID: 3 HTTP/1.1 400 Неверный запрос Тип контента: приложение/json;charset=utf-8 Длина контента: 258 Версия OData: 4.0 { "ошибка" : { "код": "-5002", "подробности" : [ { "код" : "", "сообщение" : "" } ], "сообщение" : "Ошибка". } } --batchresponse_hKXEHg8m-qSXb-TCW6-dl3M-4r2H6qxgAbaG-- После выполнения запроса я проверяю результаты каждой операции.
batchResponse.getModificationResult(createDocument1); пакетный ответ.getModificationResult(createDocument2); пакетный ответ.getModificationResult(createDocument3); Первый вызов вышеуказанного метода вызывает исключение, однако на самом деле причиной ошибки был createDocument3.
Можно ли мне узнать, какая операция привела к сбою набора изменений в SDK? В пакетном ответе вы можете видеть, что возвращается Content-ID: 3, так можно ли получить его оттуда?
Можно ли при работе с пакетом, содержащим набор изменений, получить Content-ID ответа пакета, если набор изменений не выполнен?
Предположим, у меня есть следующий код для создания пакета с набором изменений с помощью SDK. createDocument3 выдаст ошибку и приведет к сбою всего набора изменений:
BatchRequestBuilder BatchRequestBuilder = новый BatchRequestBuilder("/v1/"); BatchRequestBuilder.addChangeset(createDocument1, createDocument2, createDocument3)); BatchResponse пакетный ответ = пакетный запросBuilder.execute(назначение); Вот пример данных запроса и ответа, которые передаются в конечную точку.
[Чт, 29 февраля 22:06:11 2024] [10.0.0.2] [pid=4152] [Запрос] «POST /v1/$batch HTTP/1.1» Версия OData: 4.0 Тип контента: многочастный/смешанный; граница = batch_17d7a8c3-d3c7-42d4-b6a6-06ef1d975008 Длина контента: 2173 Хост:test-sapsvcl.aadds.teamson.com:50000 Соединение: Keep-Alive Пользовательский агент: Apache-HttpClient/4.5.14 (Java/21.0.2) Файл cookie:************************************************ ************************** Accept-Encoding:gzip,deflate X-Forwarded-Proto:https --batch_17d7a8c3-d3c7-42d4-b6a6-06ef1d975008 Тип контента: multipart/mixed;boundary=changeset_d3c4fa68-582a-46fd-8691-d24272625cda --changeset_d3c4fa68-582a-46fd-8691-d24272625cda Тип контента: приложение/http Кодирование передачи контента: двоичное Идентификатор контента: 1 POST-заказы HTTP/1.1 Принять: приложение/json Тип контента: приложение/json {"@odata.type":"#SAPB1.Document"..........} --changeset_d3c4fa68-582a-46fd-8691-d24272625cda Тип контента: приложение/http Кодирование передачи контента: двоичное Content-ID: 2 POST-заказы HTTP/1.1 Принять: приложение/json Тип контента: приложение/json {"@odata.type":"#SAPB1.Document"..........} --changeset_d3c4fa68-582a-46fd-8691-d24272625cda Тип контента: приложение/http Кодирование передачи контента: двоичное Content-ID: 3 POST-заказы HTTP/1.1 Принять: приложение/json Тип контента: приложение/json {"@odata.type":"#SAPB1.Document"..........} --changeset_d3c4fa68-582a-46fd-8691-d24272625cda-- --batch_17d7a8c3-d3c7-42d4-b6a6-06ef1d975008-- [Чт, 29 февраля, 22:06:11 2024 г.] [10.0.0.2] [pid=4152] [Ответ] «POST /v1/$batch HTTP/1.1» Код состояния: [200 ОК] Дата:Чт, 29 февраля 2024 г., 22:06:11 по Гринвичу Сервер: Апач Версия OData: 4.0 Длина контента: 569 Тип контента: многочастный/смешанный; граница = пакетный ответ_hKXEHg8m-qSXb-TCW6-dl3M-4r2H6qxgAbaG --batchresponse_hKXEHg8m-qSXb-TCW6-dl3M-4r2H6qxgAbaG Тип контента: приложение/http Кодирование передачи контента: двоичное Content-ID: 3 HTTP/1.1 400 Неверный запрос Тип контента: приложение/json;charset=utf-8 Длина контента: 258 Версия OData: 4.0 { "ошибка" : { "код": "-5002", "подробности" : [ { "код" : "", "сообщение" : "" } ], "сообщение" : "Ошибка". } } --batchresponse_hKXEHg8m-qSXb-TCW6-dl3M-4r2H6qxgAbaG-- После выполнения запроса я проверяю результаты каждой операции.
batchResponse.getModificationResult(createDocument1); пакетный ответ.getModificationResult(createDocument2); пакетный ответ.getModificationResult(createDocument3); Первый вызов вышеуказанного метода вызывает исключение, однако на самом деле причиной ошибки был createDocument3.
Можно ли мне узнать, какая операция привела к сбою набора изменений в SDK? В пакетном ответе вы можете видеть, что возвращается Content-ID: 3, так можно ли получить его оттуда?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение