Acumatica 6.0 WSE, возвращающая данные в кодировке gzip
Функциональность конечной точки веб-службы изменилась для 6.0, и теперь ответы на запросы кодируются в GZIP. Есть ли способ отключить это при отправке запросов WSE?
У нас есть C++ DLL, которая без проблем работает с Acumatica 5.3, но как только мы обновили одну из наших тестовых систем до 6.0, мы больше не можем обрабатывать ответы. В долгосрочной перспективе мы решим эту проблему, добавив поддержку GZIP в наш код, однако в краткосрочной перспективе нам потребуется поддержка 6.0 без существенных изменений в нашем коде.
Например, в версии 5.3 мы отправили следующий запрос
<soap:Envelope xmlns:soap="schemas.xmlsoap.org/soap/envelope/"; xmlns:xsi="w3.org/2001/XMLSchema-instance"; xmlns:xsd="w3.org/2001/XMLSchema"; xmlns="acumatica.com/entity/5.30.001.004/OzLINK_WSE/… xsi:type="StockItem">
<InventoryID xsi:type="StringSearch">
<Value>5001</Value>
<Condition>Equal</Condition>
</InventoryID>
</entity>
</Get>
</soap:Body>
</soap:Envelope>
и это правильно вернуло данные для позиции товара 5001. ПРИМЕЧАНИЕ. ВСЕ элементы XMLNS находятся в теге Envelope.
Однако в 6.0 тот же запрос завершается неудачно с большим сообщением об ошибке, и мы обнаружили, что нам пришлось изменить запрос, чтобы переместить элементы XMLNS
<soap:Envelope xmlns:soap="schemas.xmlsoap.org/soap/envelope/">
<soap:Body xmlns:xsi="w3.org/2001/XMLSchema-instance"; xmlns:xsd="w3.org/2001/XMLSchema">
<Get xmlns="acumatica.com/entity/5.30.001.004/OzLINK_WSE/… xsi:type="StockItem"><ReturnBehavior>All</ReturnBehavior>
<InventoryID xsi:type="StringSearch">
<Value>5001</Value>
<Condition>Equal</Condition
></InventoryID>
</entity>
</Get></soap:Body></soap:Envelope>
Мы также заметили, что структура XML, возвращаемого 6.0, немного отличается, у нас теперь есть пространство имен p4, которого раньше не было, это вызывает некоторые проблемы с нашей логикой синтаксического анализа, к которой мы сейчас обращаемся.
Спасибо Крис