Michał Sznurawa

Michał Sznurawa Scala Developer

Temat: Problem z SoapServer i parametrami metody

Mam problem z zendowskim SoapServer. Jeśli mam np metodę: className::test(param1,param2) to po wywołaniu jej, soapserver pakuje wszystkie parametry wywołania do obiektu stdClass i przekazuje to jako pierwszy param.

Jeśli np mam className::test2(param1) (i param1 ma być typu prostego), to dzieje się to samo (param1 jest dodatkowo opakowany).

stdClass::__set_state(array(
'param1' => 12,
));

Zarówno klient jak i serwer korzystają z tej samej WSDLki, tworzonej przy pomocy Zend_Soap_AutoDiscover (strategia: Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex - ale to nie wpływa w moim przypadku na nic).

Zapytanie soapowe też wygląda ok:

<ns2:test2>
<param1>12</param1>
</ns2:test>

Ma ktoś może pomysł, co robię źle? Mam przeczucie, że to coś banalnego:/ ale nie mogę znaleźć przyczyny.


(używam: PHP 5.2.10 / 5.2.12. Problem może wiąząć się też poprostu ze zwykłym soapserver )

konto usunięte

Temat: Problem z SoapServer i parametrami metody

Spróbuj przekazywać zawsze tylko jeden parametr-tablice. Np. className::test(array('param1' => 'wartosc', 'param2' => 'wartosc')), gdzie nazwa parametrów jest oczywiście zgodna z rzeczywistymi.

Oczywiście mogłem źle zrozumieć o co Ci chodzi :)
Jarek W.

Jarek W. Software Engineer

Temat: Problem z SoapServer i parametrami metody

A opakowujesz wszystko w soapVar?
Michał Sznurawa

Michał Sznurawa Scala Developer

Temat: Problem z SoapServer i parametrami metody

Marcin Olichwirowicz:
Spróbuj przekazywać zawsze tylko jeden parametr-tablice. Np. className::test(array('param1' => 'wartosc', 'param2' => 'wartosc')), gdzie nazwa parametrów jest oczywiście zgodna z rzeczywistymi.

Oczywiście mogłem źle zrozumieć o co Ci chodzi :)

Sam nie rozumiem, o co mi chodzi;) Ale chyba nie do końca o to.

Nie opakowuję niczego w soapVar. W przykładach, z których czerpię natchnienie, nigdzie to nie było potrzebne.

A chodzi o coś takiego mniej więcej:
$wsdl = new Zend_Soap_AutoDiscover('Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex');
$wsdl->setOperationBodyStyle(array('use' => 'literal'));
$wsdl->setBindingStyle(array('style' => 'document'));

i ten literal i document "psują".

Następna dyskusja:

Problem z php i excelem




Wyślij zaproszenie do