如何从客户端的SOAP头读取数据

时间:2011-11-14 16:38:36

标签: php soap-client

我的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>

并且不知道如何从标题中读取数据(获取标记值)。我正在使用PHP5中的SoapClient

3 个答案:

答案 0 :(得分:2)

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的soap对象的类,并执行一些缓存和drupal特定的事情,但你应该能够删除这些部分并留下一个透明地处理滑动授权令牌netFORUM的新类。使用

答案 1 :(得分:1)

根据manual

$soapclient->__soapCall("soapmethod", array(parameters), null, $input_headers, &$output_headers);
然后, $ output_headers应包含响应消息中的标头。

答案 2 :(得分:0)

我是在http://hardforum.com/showthread.php?t=1651481

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