Как получить доступ к телу XML в PHP SOAP-сервере

При использовании ebay API он отправляет уведомления на ваш сервер, которые могут выглядеть примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
Stuff in header
</soapenv:Header>
<soapenv:Body>
<GetItemResponse xmlns="urn:ebay:apis:eBLBaseComponents">
<Timestamp>2015-02-22T16:19:51.956Z</Timestamp>
<Ack>Success</Ack>
<CorrelationID>3759873</CorrelationID>
<Version>885</Version>
<Build>E885_CORE_APIMSG_16971418_R1</Build>
<NotificationEventName>ItemRevised</NotificationEventName>
.
.
</GetItemResponse>
</soapenv:Body>
</soapenv:Envelope>

Я определяю функцию GetItemResponse затем зарегистрируйте его в объекте сервера SOAP $server->addFunction("GetItemResponse");, Проблема в том, что функции передается только первый элемент » в качестве первого аргумента. Как мне передать все тело в мою функцию?

1

Решение

Попробуйте преобразовать результат в объект XML, как показано ниже:

$xml = simplexml_load_string($response);

и передать $ xml

0

Другие решения

Попробуй это:

function GetItem($arg1, $arg2, $arg3){
var_dump(func_get_args());
}
$soapServer->addFunction('GetItem')

GetItemResponse — это имя узла, которое содержит ответ на вызов GetItem. Также вам следует добавить дополнительные параметры в функцию GetItem, если они вам нужны.

Больше информации о параметрах: http://developer.ebay.com/DevZone/XML/docs/Reference/ebay/GetItem.html

Если вам действительно нужно полное тело, тогда переопределите метод дескриптора из SoapServer. Это позволит вам получить все тело.

0

По вопросам рекламы [email protected]