PHP nasıl complexTypes dönen bir Webcoder tüketiyorsunuz?

3 Cevap php

I PHP 5.2.10 kullanıyorum ve ben complex data types kullanarak döndüren bir webcoder tüketmek çalışıyorum standard SOAP extension .

Sorun SoapClient nesnelerin diğer nesneleri / diziye iç içe nesneleri doldurmak olmamasıdır. Bir parametre olarak "my_unique_id" belirterek, getUtente yöntemini çağırdığınızda ben ne olsun basitleştirilmiş bir örnektir:

stdClass Object
(
    [getUtenteReturn] => stdClass Object
        (
            [userName] => my_unique_id
            [fieldOne] => ...
            [fieldTwo] => ...
            [utilizzatore] => stdClass Object
                ( // This is EMPTY instead of containing a series of userName's
                )

        )

)

WDSL açıklamanın ilgili kısmı:

<element name="getUtenteResponse">
  <complexType>
    <sequence>
      <element name="getUtenteReturn" type="tns1:Cliente"/>
    </sequence>
  </complexType>
</element>
...
<complexType name="Utilizzatore">
  <sequence>
    <element name="userName" nillable="true" type="xsd:string"/>
  </sequence>
</complexType>
...
<complexType name="Cliente">
  <complexContent>
    <extension base="tns1:Utilizzatore">
      <sequence> 
        <element name="fieldOne" nillable="true" type="xsd:string"/>
        <element name="fieldTwo" nillable="true" type="xsd:string"/>
        <element name="utilizzatore" nillable="true" type="impl:ArrayOf_tns1_Utilizzatore"/>
      </sequence>
    </extension>
  </complexContent>
</complexType>

Ben bu sorunla karşılaşan tek kişi ben ne buldum. Özellikle ben PHP resmi belgelerinde this comment bulundu ve this other forum entry sorunu yaklaşım konusunda iki farklı fikir vermek için, ama ben bu iki {[herhangi açmak mümkün olmamıştır (2)]} bir working solution: Ben tamamen Verilen örneklerde arkasındaki mantığı anlamak için değil gibi görünüyor.

Ben öncelikle sonra gerçekten sorun ve önerilen çözümlerin mantığını anlamak olduğunu ben ne başka bir webcoder bazı çalışan kod hoş olurdu, ama: ben herkes bu bana rehberlik eğer minnettar olacaktır (balık şeritli, değil balık!) . :)

3 Cevap

Eski bir soru, cevap yok. Consuming SOAP complexType webservice with PHP: Geçenlerde bu sorunu açıklayan ve bir çözüm sunuyor, bu yazı üzerine tökezledi.

İşte benim acil düşünce üzgünüm bu, sadece bazı fikirler doğru bir cevap değil, bir ...

İlk olarak, sabun isteği sabun sunucuya gönderilen (zarf) inceleyen denediniz mi? Çalışması gerektiği gibi mi görünüyorum? Yanlış gidiyor nerede görebilirsiniz? Sadece geri bir SoapFault veya yanlış veri, ya da hiçbir şey bir hata alıyor musunuz?

İkinci olarak, SoapParam sınıfını kullanarak denedi?

Son olarak, ben bu hakkı yapıyoruz eminim, ama bina nesne adı ve yan fieldOne ve fieldTwo bütün tarafı olduğunu fark, ancak WSDL fieldOne ve fieldTwo (sınıf CLIENTE parçası olduğunu gösterir asla Kullanıcı adınızı utilizzatore dizinin içinde olmalıdır, bu nedenle daha fazla gibi olmamalı iken) sizin örnekte gösterir:

stdClass Object
(
    [Cliente] => stdClass Object
        (
            [fieldOne] => ...
            [fieldTwo] => ...
            [utilizzatore] => stdClass Object
                ( // This is EMPTY instead of containing a series of userName's
                )

        )

)

Ben sadece daha iyi size yardımcı olabilecek fikirler sunarak kendimi anlamak için umut çünkü beni, bu yüzden, bir eleştiri olarak herhangi yapmayız için SoapClient sınıf çok sinir bozucu.

Mac, teşekkürler istemi yanıtlar için çok. i üzerinde yuvarlandım ne bakmak .. Ben bunu daha önce bakmadı. Bu nedenle paylaşmak istiyorum this.