Как читать данные из заголовка SOAP на стороне клиента - PullRequest
2 голосов
/ 14 ноября 2011

У меня есть SOAP-ответ, который выглядит как

<soap:Envelope>
    <soap:Header>
        <AuthorizationToken soap:mustUnderstand="1">
            <Token>5c31cca8-8303-4d01-a564-a99569a0963a</Token>
        </AuthorizationToken>
    </soap:Header>
    <soap:Body>
        <AuthenticateResponse>
            <AuthenticateResult>http://www.avectra.com/OnDemand/2005/</AuthenticateResult>
        </AuthenticateResponse>
    </soap:Body>
</soap:Envelope>

, и я не знаю, как читать данные из заголовка (получить значение токена).Я использую SoapClient из PHP5.

Ответы [ 3 ]

2 голосов
/ 27 января 2012

С http://drupalcode.org/project/netforum.git/blob/refs/heads/master:/xwebSecureOD.class.inc похоже, что это должно работать:

$soapclient->__soapCall($fname, $arguments, null, $this->getAuthHeaders(), $responseHeaders);
$responseHeaders['AuthorizationToken']->Token;

Эта ссылка имеет класс, который расширяет объект мыла PHP и выполняет некоторые вещи, связанные с кэшированием и друпал, но вы должны иметь возможностьчтобы удалить эти части и остаться с новым классом, который прозрачно обрабатывает токен скользящей авторизации, который использует netFORUM.

1 голос
/ 14 ноября 2011

Согласно руководству :

$soapclient->__soapCall("soapmethod", array(parameters), null, $input_headers, &$output_headers);

$ output_headers должен содержать заголовки из ответного сообщения.

0 голосов
/ 22 апреля 2015

Я получил это от JackTheKnife на http://hardforum.com/showthread.php?t=1651481

    $result = $service->getLastResponse();
    $xmlString = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $result);
    $xml = simplexml_load_string($xmlString);
    $token = $xml->soapHeader[0]->AuthorizationToken[0]->Token;
...