我有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
。
来源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使用的滑动授权令牌的新类。
根据手册:
$soapclient->__soapCall("soapmethod", array(parameters), null, $input_headers, &$output_headers);
$output_headers应该包含响应消息中的头。
我从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;