如何访问SOAP-ENV: header内部的数据通过PHP


How to access data inside <SOAP-ENV:Header> via PHP

我试图使用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