如何通过PHP </soap-env:header>访问<soap-env:header>中的数据

时间:2014-08-20 13:36:17

标签: php xml soap wsdl

我正在尝试使用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>位于{{1}}内1}}?

1 个答案:

答案 0 :(得分:0)

可能有一种更好的方式来访问标题中的数据,但您可以使用

preg_match("/getQuotaResponse>([^<]+)/",$response, $match); 
echo $match[1]; 

输出:

123456