PHP Soap Client收到不完整的数据

时间:2014-11-21 14:24:31

标签: php web-services soap

我编写了非常简单的代码来检索soap数据:

    $wsdl = 'https://...';
    $client = new SoapClient($wsdl, ['trace' => true]);

    $soap_parameters = [
        'leveranciernaam' => 'xxx',
        'leveranciersleutel' => 'yyy',
        'brinnummer' => 'zzzz',
        'schooljaar' => 2012
    ];

    $response = $client->getLeerlingen($soap_parameters);

令我惊讶的是,回归与使用基于Java的GUI应用程序时收到的回报不同。 PHP SoapClient响应中的某些字段始终缺失。

为了确保在转换为stdObjects时没有丢失内容,我使用了trace选项并从$client->__getLastResponse();中提取了实际的XMl 仍然没有那些领域 - 一直有数百条记录。

基于Windows Java的客户端响应:

<return>
    <leerlingen>
        <leerling>
            <id>353226866</id>
            <roepnaam>Evline</roepnaam>
            ...  
            <achternaam>Staalstra</achternaam>
            <inschrijvingen>
                <inschrijving>
                    <id>353226867</id>
                    <datumInschrijving>2007-08-20T00:00:00+02:00</datumInschrijving>
                    <schoolVanHerkomst>7138</schoolVanHerkomst>
                    <vervolgSchool>7138</vervolgSchool>
                    <onderwijsSoortBestemming>
                       <id>4085</id>
                   </onderwijsSoortBestemming>
                </inschrijving>
            </inschrijvingen>
        </leerling>
        ...
    </leerlingen>
    <brins>
        <brin>
            <id>47187537</id>
            <brinNummer>02YN02</brinNummer>
            <schoolNaam>De Ambelt School V LZK</schoolNaam>
        </brin>
        ...
    </brins>
</return>

我得到的回应:

<return>
    <leerlingen>
        <leerling>
            <id>353226866</id>
            <roepnaam>Evline</roepnaam>
            ...  
            <achternaam>Staalstra</achternaam>
            <inschrijvingen>
                <inschrijving>
                    <id>353226867</id>
                    <datumInschrijving>2007-08-20T00:00:00+02:00</datumInschrijving>
                    <inschrijvingType>1766564</inschrijvingType>
                </inschrijving>
            </inschrijvingen>
        </leerling>
        ...
    </leerlingen>
</return>

PHP客户端没有(或没有正确解析)元素schoolVanHerkomst中的任何元素vervolgSchoolonderwijsSoortBestemminginschrijving,它完全错过了brins

为简洁起见,我省略了其他工作得很好的深层嵌套元素

由于预期结果是动态的,因此WDSL(https://acceptatie.parnassys.net/bao/services/cxf/v1/generic?wsdl)不会定义输出。

发生了什么事?似乎PHP Soap客户端的可靠性低于Java Soap客户端

0 个答案:

没有答案