SOAP og PHP5

Tags:    php

Hej
Nu har jeg kæmpet i en uge med at udskrive et felt fra en webservice:

$client = new SoapClient("http://www.elounge.com/partner/PartnerSearch.asmx?wsdl");
$result = $client->Search2('9788778672124', 1, '8dc7de85');
echo $result->Search2Result('Title');

Jeg tror, det er et simpelt syntaksproblem men har forsøgt 20 forskellige kombinationer ligesom jeg har været over 20 eksempler igennem fundet på nettet.
Den fejler i linie 3 med:
"Fatal error: Call to undefined method stdClass::Search2Result()"
Men metoden hedder Search2Result()???





Search2 returnere vel et object af type stdClass. stdClass er et standard object i PHP som ikke indeholde nogen form for metoder.

Umiddelbart når man kigger i WS teksten, så er der ikke nogen metode der hedder Search2Result(). Om jeg måske læser det forkert, skal jeg ikke kunne sige.

Du bør nok læse dokumentationen fra elounge.



Hej Michael
Tak for svar. Dokumentationen omfatter kun et eksempel på et svar i XML-format og eLounge kan ikke hjælpe yderligere.
Search2Result er defineret i linie 60.
Kan du evt. henvise til nogle tilsvarende eksempler på nettet?
Jeg har kun fundet dette fungerende eksempel: http://www.vankouteren.eu/blog/2009/03/simple-php-soap-example/



Er du sikker på at Search2Result() ikke er en metode til $client, der giver resultatet fra dit sidste Search2() kald? Alternativt kan Search2Result ganske enkelt være en medlemsvariabel af $result, og ikke en metode.

Ellers kan du prøve at vises os outputtet af:
Fold kodeboks ind/udKode 

så vi kan se hvad der rent faktisk kommer tilbage fra $client->Search2()



Indlæg senest redigeret d. 26.09.2010 01:44 af Bruger #8223
Hej Per
Her er output:

object(stdClass)#2 (1) { ["Search2Result"]=> object(stdClass)#3 (1) { ["any"]=> string(399) "DkkSekNkr€£$Edollars" } }

Jeg er selvlært i PHP og roder sikkert rundt i object/class/metode/funktion. Ovenstående output et helt sort men kunne tyde på, at det er mit kald til webservicen der er fejl i (selvom der ikke kommer nogen fejlmeddelelse).

I dokumentationen står der:

Access to webservices is via:
http://www.elounge.com/partner/PartnerSearch.asmx?op=Search2

Three parameters must be filled in, respectively:
[searchString]
[currency]
[affiliateCode]




object(stdClass)#2 (1) { ["Search2Result"]=> object(stdClass)#3 (1) { ["any"]=> string(399) "DkkSekNkr€£$Edollars" } }

Lad os tage den skridt for skridt.

Det ovenstående betyder at $result er et objekt af klassen stdClass(objekter i PHP der ikke kommer fra en klasse udvikleren har defineret, er altid af stdClass, standardClass) der indeholder ét medlem: Search2Result.

Search2Result er i sig selv et objekt af klassen stdClass, og indeholder ét medlem: any

Any er en tekststreng, og indeholder værdien "DkkSekNkr€£$Edollars"

Så for at få den streng outputtet skal du sige:
Fold kodeboks ind/udKode 




Hej Per
Tak for svaret. Nu kan jeg læse den krøllede syntaks og fandt ud af, at der kun returneres 1 felt "any". Så jeg har skiftet strategi og har løst opgaven ved at bruge HTTP/Get: loadXML(file_get_contents($URL). Her får jeg en XML-fil, jeg kan løbe igennem og fiske enkelte felter ud af.
Tak for hjælpen :)



t