phpbar.de logo

Mailinglisten-Archive

Ant: Re: [php] PEAR::SOAP und Arrays ?

Ant: Re: [php] PEAR::SOAP und Arrays ?

Markus Jais markusjais at yahoo.de
Mon Aug 29 15:46:14 CEST 2005


--- Johann-Peter Hartmann <hartmann at mayflower.de>
schrieb:

> Hi Markus,
> 
> Markus Jais schrieb:
> > ich versuch einen in Java geschriebenen  Soap
> Service
> > aufzurufen:
> > 
> > $wsdl = new SOAP_WSDL($url);
> > $proxy = $wsdl->getProxy();
> > $result = $proxy->getData("33", "44", array('1',
> '2',
> > '4'));
> > 
> > 
> > wenn ich das array leer lasse dann geht es aber
> sonst
> > bekomme ich immer:
> > Error: No deserializer for
> > {http://www.w3.org/2001/XMLSchema}anyType
> > 
> > im WDSL schaut es so aus:
> > <wsdl:message name="getDataRequest">
> > <wsdl:part name="in0" type="xsd:string"/>
> > <wsdl:part name="in1" type="xsd:string"/>
> > <wsdl:part name="in2" type="soapenc:Array"/>
> > </wsdl:message>
> > 
> > 
> > ich schätze jetzt mal dass man das array irgendwie
> > anders übergeben muss.
> > leider finde ich dazu keine doku.
> > 
> > weiß jemand wie das geht ?
> 
> Leider kenn ich mich mit PEAR::SOAP nur soweit aus,
> dass es mir Angst 
> macht, trotzdem 2-3 Cents von mir dazu:
> 
> Die WSDL-Definition von in2 ist etwas sehr sparsam,
> da zwar gesagt wird, 
> dass es sich um ein array handelt, aber nicht, was
> da drin ist. In PHP 
> geht das fabelhaft, denn wir sind ja nicht typfest,
> und in einem von 
> unseren Arrays können auch - prinzipiell - Gurken
> vorkommen.
> 
> PEAR::SOAP nimmt dementsprechend richtig an, dass es
> sich um ein Array 
> von unbestimmten Inhalts (=> daher anyType) handelt,
> und liefert ein 
> solches zurück. Damit kann aber Java nichts
> anfangen, weil keine 
> dynamischen Typen, keine Gurken.
> 
> Deine Einschätzung, dass man da Java beim
> demarshalling ein bischen 
> unter die Arme greifen musst, ist völlig richtig,
> und genau dazu bietet 
> PEAR::SOAP das Hilfsobjekt SOAP_Value an.
> 
> Also z.B.
> $in2 = new SOAP_Value('in2', 'string[]',
> array(1,2,4) );
> $proxy->getData("33", "44", $in2);
> 	
> Bei dem (imho vorzuziehenden) Soap in PHP5 würde man
> es so darstellen:
> $in2 = new SoapVar(array(1,2,4),SOAP_ENC_ARRAY);
> 
> Ich habe keine Ahnung, ob es so funktioniert, würde
> mich aber über 
> kurzes Feedback an die Liste, welcher Weg jetzt
> (nicht) geklappt hat, 
> freuen.
> 

danke für den tip. hat leider auch nicht geklappt.
ich versuch es jetzt mal mit der neuen SOAP
Implementierung von PHP5 oder mit NuSoap. (mit NuSoap
geht es. da war der Test erfolgreich).

gruß

Markus

> 
> Liebe Grüße aus Buenos Aires,
> Johann
> -- 
> ** Allgemeine deutschsprachige PHP-Liste:
> php at phpbar.de **
> Informationen: http://www.phpbar.de
> http://lists.phpbar.de/mailman/listinfo/php
> 



	

	
		
___________________________________________________________ 
Gesendet von Yahoo! Mail - Jetzt mit 1GB Speicher kostenlos - Hier anmelden: http://mail.yahoo.de

php::bar PHP Wiki   -   Listenarchive