【问题标题】:How to access data inside <SOAP-ENV:Header> via PHP如何通过 PHP 访问 <SOAP-ENV:Header> 中的数据
【发布时间】:2014-08-20 13:36:17
【问题描述】:

我正在尝试使用 PHP 的 SoapClient 类来查询 Web 服务。在某种程度上,它工作正常,但我想访问我在回复的&lt;SOAP-ENV:Header&gt; 部分返回的内容 - 并且正在努力了解如何!

如果我拨打以下电话:

$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 变量包含与&lt;SOAP-ENV:Body&gt; 的内容相对应的事务数组,这很好,但是我如何访问位于&lt;SOAP-ENV:Header&gt; 内部的getQuotaResponse 的值?

【问题讨论】:

    标签: php xml soap wsdl


    【解决方案1】:

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

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

    输出:

    123456
    

    【讨论】:

    • 是的,虽然你可以这样做,但我真的想避免它。我想一定有一种方法可以通过SoapClient...
    • 您可以尝试使用__soapCall()$soapClient-&gt;__soapCall("getTransactionList", $params, null, $input_headers, $output_headers); 并检查 $output_headers 包含的内容。
    • 这听起来可能行得通!但是,我收到以下错误:Uncaught SoapFault exception: [SOAP-ENV:Client] Error cannot find parameter - 也无法弄清楚是什么原因造成的……
    • 尝试删除$input_headers,或将其设置为空数组,可能是导致它的原因。
    • 是的,试过了,不幸的是,通过null(这是默认值)没有运气!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 2021-11-15
    • 1970-01-01
    相关资源
    最近更新 更多