我试图使用PHP的SoapClient
类来查询web服务。在某种程度上,它工作得很好,但我想访问一些我在响应的<SOAP-ENV:Header>
部分得到的东西-我正在努力看看如何!
如果我拨打以下电话:
$transactions = $soapClient->getTransactionList($params);
$response = $soapClient->__getLastResponse();
$response
的含量为:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://api.affiliatewindow.com/">
<SOAP-ENV:Header>
<ns1:getQuotaResponse>123456</ns1:getQuotaResponse>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:getTransactionListResponse>
<ns1:getTransactionListReturn>
<ns1:Transaction>
<-- Data here, removed for brevity -->
</ns1:Transaction>
<ns1:Transaction>
<-- Data here, removed for brevity -->
</ns1:Transaction>
<ns1:Transaction>
<-- Data here, removed for brevity -->
</ns1:Transaction>
</ns1:getTransactionListReturn>
</ns1:getTransactionListResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
我的$transactions
变量包括一个与<SOAP-ENV:Body>
的内容相对应的事务数组,这很好,但是我如何访问getQuotaResponse
的值,它位于<SOAP-ENV:Header>
内?
在header中访问数据可能有更好的方法,但是您可以使用
preg_match("/getQuotaResponse>([^<]+)/",$response, $match);
echo $match[1];
输出:123456