SOAP的请求xml不包含PHP7上的对象数组

SOAP的请求xml不包含PHP7上的对象数组,php,soap,wsdl,Php,Soap,Wsdl,在使用php7移动到新服务器之后,SOAP停止生成XML请求中传输的对象中包含的一个元素 链接到WSDL文件: 以及生成传递给SOAP的对象的示例代码: $shipment = new addShipment(); $P = new przesylkaBiznesowaType(); $A = new adresType(); $adres = new adresType(); $adres->miejscowosc = "Gdynia";

在使用php7移动到新服务器之后,SOAP停止生成XML请求中传输的对象中包含的一个元素

链接到WSDL文件:

以及生成传递给SOAP的对象的示例代码:

    $shipment = new addShipment();
    $P = new przesylkaBiznesowaType();
    $A = new adresType();

    $adres = new adresType();
    $adres->miejscowosc = "Gdynia";
    $adres->kodPocztowy = "81-301";
    $adres->kraj = "Polska";
    $adres->nazwa = "Jan Kowalski";
    $adres->ulica = "10 Lutego";
    $adres->numerDomu = "10";
    $adres->email = "jan.kowalski@mailowo.pl";
    $adres->mobile = "510000000";
    $P->adres = $adres;

    $P->opis = "";
    $P->masa = "500";
    $P->wartosc = "600";
    $P->ostroznie = true;
    $P->gabaryt = gabarytBiznesowaType::XL;
    unset($P->urzadWydaniaEPrzesylki);  

    $subPrzesylka1 = new subPrzesylkaBiznesowaType();
    $subPrzesylka1->guid = getGuid();
    $subPrzesylka1->gabaryt = gabarytBiznesowaType::M;
    $subPrzesylka1->masa = 4233;
    $subPrzesylka1->ostroznie = false;
    $subPrzesylka1->opis = "";
    $subPrzesylka2 = new subPrzesylkaBiznesowaType();
    $subPrzesylka2->guid = getGuid();
    $subPrzesylka2->gabaryt = gabarytBiznesowaType::L;
    $subPrzesylka2->masa = 4233;
    $subPrzesylka2->ostroznie = false;
    $subPrzesylka2->opis = "";
    $subPrzesylka3 = new subPrzesylkaBiznesowaType();
    $subPrzesylka3->guid = getGuid();
    $subPrzesylka3->gabaryt = gabarytBiznesowaType::XXL;
    $subPrzesylka3->masa = 4233;
    $subPrzesylka3->ostroznie = false;
    $subPrzesylka3->opis = "";
    $subPrzesylka4 = new subPrzesylkaBiznesowaType();
    $subPrzesylka4->gabaryt = gabarytBiznesowaType::S;
    $subPrzesylka4->masa = 4233;
    $subPrzesylka4->guid = getGuid();
    $subPrzesylka4->ostroznie = false;
    $subPrzesylka4->opis = "";
    $subPrzesylka5 = new subPrzesylkaBiznesowaType();
    $subPrzesylka5->guid = getGuid();
    $subPrzesylka5->gabaryt = gabarytBiznesowaType::M;
    $subPrzesylka5->masa = 4233;
    $subPrzesylka5->ostroznie = false;
    $subPrzesylka5->opis = "";

    $P->subPrzesylka = array(
            $subPrzesylka1,
            $subPrzesylka2,
            $subPrzesylka3,
            $subPrzesylka4,
            $subPrzesylka5 );

    $shipment->guid = getGuid();
    $P->guid = $this->guid;
    $shipment->przesylki[] = $P;
    $E = new ElektronicznyNadawca();
    $result = $E->addShipment($shipment);
在示例代码中,我使用的是此归档文件中ElektronicznyNadawca.php文件中定义的classess:

对象如下所示:

addShipment Object
(
[przesylki] => Array
    (
        [0] => przesylkaBiznesowaType Object
            (
                [pobranie] => 
                [subPrzesylka] => Array
                    (
                        [0] => subPrzesylkaBiznesowaType Object
                            (
                                [ubezpieczenie] => 
                                [numerNadania] => 
                                [masa] => 4233
                                [gabaryt] => M
                                [wartosc] => 
                                [ostroznie] => 
                                [guid] => 9419B78744013A2F06A503F2A32AA977
                                [opis] => 
                            )

                        [1] => subPrzesylkaBiznesowaType Object
                            (
                                [ubezpieczenie] => 
                                [numerNadania] => 
                                [masa] => 4233
                                [gabaryt] => L
                                [wartosc] => 
                                [ostroznie] => 
                                [guid] => 0F10CB861668B705C657A3C567924E00
                                [opis] => 
                            )

                        [2] => subPrzesylkaBiznesowaType Object
                            (
                                [ubezpieczenie] => 
                                [numerNadania] => 
                                [masa] => 4233
                                [gabaryt] => XXL
                                [wartosc] => 
                                [ostroznie] => 
                                [guid] => F3DC09C9090CD62FCCD56B55BDD9373A
                                [opis] => 
                            )

                        [3] => subPrzesylkaBiznesowaType Object
                            (
                                [ubezpieczenie] => 
                                [numerNadania] => 
                                [masa] => 4233
                                [gabaryt] => S
                                [wartosc] => 
                                [ostroznie] => 
                                [guid] => 730F8E0E7DA0C89F2051651B0F221BBD
                                [opis] => 
                            )

                        [4] => subPrzesylkaBiznesowaType Object
                            (
                                [ubezpieczenie] => 
                                [numerNadania] => 
                                [masa] => 4233
                                [gabaryt] => M
                                [wartosc] => 
                                [ostroznie] => 
                                [guid] => 179E6EB18B16CBE1D44E2640312B0562
                                [opis] => 
                            )

                    )

                [ubezpieczenie] => 
                [epo] => 
                [zasadySpecjalne] => 
                [masa] => 500
                [gabaryt] => XL
                [wartosc] => 600
                [ostroznie] => 1
                [numerTransakcjiOdbioru] => 
                [adres] => adresType Object
                    (
                        [nazwa] => Jan Kowalski
                        [nazwa2] => 
                        [ulica] => 10 Lutego
                        [numerDomu] => 10
                        [numerLokalu] => 
                        [miejscowosc] => Gdynia
                        [kodPocztowy] => 81-301
                        [kraj] => Polska
                        [telefon] => 
                        [email] => jan.kowalski@mailowo.pl
                        [mobile] => 510000000
                        [osobaKontaktowa] => 
                        [nip] => 
                    )

                [opis] => 
                [guid] => 627EFD182DDBDFEF9E4D263E32E093CC
            )

    )

[idBufor] => 697283
[guid] => 627EFD182DDBDFEF9E4D263E32E093CC
)
<soap-env:envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://e-nadawca.poczta-polska.pl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap-env:body>
    <ns1:addshipment>
        <przesylki guid="2E367E17EEE4DC52FFF47F7170769F21" opis="" masa="500" gabaryt="XL" wartosc="600" ostroznie="true" xsi:type="ns1:przesylkaBiznesowaType">
            <adres nazwa="Jan Kowalski" ulica="10 Lutego" numerdomu="10" miejscowosc="Gdynia" kodpocztowy="81-301" kraj="Polska" email="jan.kowalski@mailowo.pl" mobile="510000000"></adres>
        </przesylki>
        <idbufor>697283</idbufor>
    </ns1:addshipment>
</soap-env:body>
</soap-env:envelope>
XML请求应该如下所示

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://e-nadawca.poczta-polska.pl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<ns1:addShipment>
<przesylki guid="1064FEBB36ECA2CB9C04B2163DE14A97" opis="" masa="500" gabaryt="XL" wartosc="600" ostroznie="true" xsi:type="ns1:przesylkaBiznesowaType">
<adres nazwa="Jan Kowalski" ulica="10 Lutego" numerDomu="10" miejscowosc="Gdynia" kodPocztowy="81-301" kraj="Polska" email="jan.kowalski@mailowo.pl" mobile="510000000"/>
<subPrzesylka guid="134571C05EBAB5125D2205E52C6D3309" opis="" masa="4233" gabaryt="M" ostroznie="false"/>
<subPrzesylka guid="173E430572FF57276A1CAE125BB5D703" opis="" masa="4233" gabaryt="L" ostroznie="false"/>
<subPrzesylka guid="134FF717F643F51F7BF4126A5668D5A8" opis="" masa="4233" gabaryt="XXL" ostroznie="false"/>
<subPrzesylka guid="1584130F49408A45D375F73DC483485A" opis="" masa="4233" gabaryt="S" ostroznie="false"/>
<subPrzesylka guid="1E3E081414818276A842AAE255ABC68C" opis="" masa="4233" gabaryt="M" ostroznie="false"/>
</przesylki>
<idBufor>20279201</idBufor>
</ns1:addShipment>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
但它并没有创造出“次级”元素,它看起来是这样的:

addShipment Object
(
[przesylki] => Array
    (
        [0] => przesylkaBiznesowaType Object
            (
                [pobranie] => 
                [subPrzesylka] => Array
                    (
                        [0] => subPrzesylkaBiznesowaType Object
                            (
                                [ubezpieczenie] => 
                                [numerNadania] => 
                                [masa] => 4233
                                [gabaryt] => M
                                [wartosc] => 
                                [ostroznie] => 
                                [guid] => 9419B78744013A2F06A503F2A32AA977
                                [opis] => 
                            )

                        [1] => subPrzesylkaBiznesowaType Object
                            (
                                [ubezpieczenie] => 
                                [numerNadania] => 
                                [masa] => 4233
                                [gabaryt] => L
                                [wartosc] => 
                                [ostroznie] => 
                                [guid] => 0F10CB861668B705C657A3C567924E00
                                [opis] => 
                            )

                        [2] => subPrzesylkaBiznesowaType Object
                            (
                                [ubezpieczenie] => 
                                [numerNadania] => 
                                [masa] => 4233
                                [gabaryt] => XXL
                                [wartosc] => 
                                [ostroznie] => 
                                [guid] => F3DC09C9090CD62FCCD56B55BDD9373A
                                [opis] => 
                            )

                        [3] => subPrzesylkaBiznesowaType Object
                            (
                                [ubezpieczenie] => 
                                [numerNadania] => 
                                [masa] => 4233
                                [gabaryt] => S
                                [wartosc] => 
                                [ostroznie] => 
                                [guid] => 730F8E0E7DA0C89F2051651B0F221BBD
                                [opis] => 
                            )

                        [4] => subPrzesylkaBiznesowaType Object
                            (
                                [ubezpieczenie] => 
                                [numerNadania] => 
                                [masa] => 4233
                                [gabaryt] => M
                                [wartosc] => 
                                [ostroznie] => 
                                [guid] => 179E6EB18B16CBE1D44E2640312B0562
                                [opis] => 
                            )

                    )

                [ubezpieczenie] => 
                [epo] => 
                [zasadySpecjalne] => 
                [masa] => 500
                [gabaryt] => XL
                [wartosc] => 600
                [ostroznie] => 1
                [numerTransakcjiOdbioru] => 
                [adres] => adresType Object
                    (
                        [nazwa] => Jan Kowalski
                        [nazwa2] => 
                        [ulica] => 10 Lutego
                        [numerDomu] => 10
                        [numerLokalu] => 
                        [miejscowosc] => Gdynia
                        [kodPocztowy] => 81-301
                        [kraj] => Polska
                        [telefon] => 
                        [email] => jan.kowalski@mailowo.pl
                        [mobile] => 510000000
                        [osobaKontaktowa] => 
                        [nip] => 
                    )

                [opis] => 
                [guid] => 627EFD182DDBDFEF9E4D263E32E093CC
            )

    )

[idBufor] => 697283
[guid] => 627EFD182DDBDFEF9E4D263E32E093CC
)
<soap-env:envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://e-nadawca.poczta-polska.pl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap-env:body>
    <ns1:addshipment>
        <przesylki guid="2E367E17EEE4DC52FFF47F7170769F21" opis="" masa="500" gabaryt="XL" wartosc="600" ostroznie="true" xsi:type="ns1:przesylkaBiznesowaType">
            <adres nazwa="Jan Kowalski" ulica="10 Lutego" numerdomu="10" miejscowosc="Gdynia" kodpocztowy="81-301" kraj="Polska" email="jan.kowalski@mailowo.pl" mobile="510000000"></adres>
        </przesylki>
        <idbufor>697283</idbufor>
    </ns1:addshipment>
</soap-env:body>
</soap-env:envelope>
同样的代码也适用于使用PHP5.3和5.6的旧服务器。php 7上的SOAP似乎无法识别WSDL定义的这一部分:

<xsd:choice>
    <xsd:element name="urzadWydaniaEPrzesylki" type="tns:urzadWydaniaEPrzesylkiType" maxOccurs="1" minOccurs="0" />
    <xsd:element name="subPrzesylka" type="tns:subPrzesylkaBiznesowaType" minOccurs="4" maxOccurs="unbounded" />
</xsd:choice>


我花了好几个小时想弄明白。有人知道这里有什么问题吗

这是PHP7.X中的一个bug。您应该在bugs.php.net上报告它 顺便提一下
CHOICE是WSDL文件中的有效结构。在官方文档中描述。

同时,我将WSDL文件放在本地服务器上,并将元素移到结构外部。现在,请求xml包含子przesylka元素。这只是一个临时的解决方案,我们必须求助于原始的WSDL文件,但看起来PHP7上的SOAP在xsd:choice上的反应不好。有人知道为什么吗?