Я не уверен, как это сделать. Спецификации для службы SOAP, которую я пишу, говорят, что необходимо отправить обратно сообщение подтверждения даже до того, как оно ответит запрошенным ответом на запрос.
Как это делается в PHP? Я не видел примеров того, как это сделать.
Из требований doc:
Одно сообщение подтверждения отправляется партнером по интеграции поставщику для каждого запроса на запрос SubmitInv. Одно сообщение подтверждения также отправляется Поставщиком партнеру по интеграции из каждой реакции сообщения RequestInv
Это НЕ стандартный ответ TCP ack. Это настраиваемый отформатированный ответ SOAP, который является подтверждением того, что запрос был получен. См. Пример ниже.
После опроса поставщика:
Они утверждают, что это устаревшая система, и она была написана для обработки в этом потоке. Они не могут в это время изменить его. Я сказал ему, что в программировании 20+ yrs я НИКОГДА не видел, чтобы какая-либо система SOAP требовала ACK. Он утверждал, что это связано с необходимостью "ждать" ответов. По-видимому, они не понимают, как правильно обрабатывать обработку без гражданства.
Я уже пытался сделать это с помощью функций буферизации вывода PHP, как описано ниже FoxVSky, он не работает в транзакции SOAP. Кроме того, стандартная библиотека SOAP, одна встроенная в PHP, а также Zend SOAP-библиотека имеют функцию для этого.
Пример:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<PAddRs>
<RqUID>f11958c8-3fde-42ca-bd94-94fdfca316ef</RqUID>
<PKey>46dba062-2105-4851-831f-a1d364741329</PKey>
<AppStatus>
<AppStatusCode>Accept</AppStatusCode>
</AppStatus>
</PAddRs>
</soap:Body>
</soap:Envelope>