Vraag m.b.t. Soap Webservices
http://www.pfz.nl/wiki/soap-en-php/.
Maar ik zit op dit moment met twee vragen waar ik even geen antwoord op kan vinden (of misschien dat het antwoord al ergens staat maar ik het niet snap). Heb ook al gegoogled maar zonder resultaten.
1.
Dit is misschien een beetje een vreemde vraag maar wat voor soort data wordt er als antwoord verstuurd? In het WSDL definieer ik het returntype als array (of dat probeer ik.. zie vraag 2, ik krijg in ieder geval een 2d array terug als ik het vanuit een php app run). Maar mijn vraag is, hoe kunnen nu programma's in een andere taal (java bijvoorbeeld) die deze webservices zouden gebruiken deze array lezen aangezien het een PHP array is? Hieronder een kort stukje code (heb niet de hele class alleen ff de functie).
De webservice werkt helemaal naar behoren maar zou graag willen dat UITEINDELIJK dat programma's in andere talen dit ook zouden kunnen gebruiken.
2.
Ik kan er niet achter komen hoe ik in me WSDL bestand een array type kan definieren ik heb het op deze manier geprobeerd:
en dan het op de volgende manier te declareren
Als ik dan een var dump probeer uit te voeren of ie een type correct aangeeft toont ie aan dat het 'unknown' is. dus hij herkent het type niet (dat denk ik zo). Doe ik hier iets verkeerd?
--
Als iemand mij kan helpen met deze twee vragen wordt dit erg gewaardeerd :). Alvast bedankt.
--edit
layout was gaar.
Ben sinds kort een beetje aan het proberen om een SOAP webservice op te zetten en op zich is het aardig gelukt door gebruik te maken van het artikel Maar ik zit op dit moment met twee vragen waar ik even geen antwoord op kan vinden (of misschien dat het antwoord al ergens staat maar ik het niet snap). Heb ook al gegoogled maar zonder resultaten.
1.
Dit is misschien een beetje een vreemde vraag maar wat voor soort data wordt er als antwoord verstuurd? In het WSDL definieer ik het returntype als array (of dat probeer ik.. zie vraag 2, ik krijg in ieder geval een 2d array terug als ik het vanuit een php app run). Maar mijn vraag is, hoe kunnen nu programma's in een andere taal (java bijvoorbeeld) die deze webservices zouden gebruiken deze array lezen aangezien het een PHP array is? Hieronder een kort stukje code (heb niet de hele class alleen ff de functie).
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
//deze functie toont afspraken uit een agenda en returned dit in een 2d array
public function toonAfspraak($datum) {
$qString = 'select tijd, afspraken from tbl_agenda WHERE datum = '.$datum.';';
$result = $this->dbClass->doeQuery($qString);
return $result;
}
$server = new SoapServer("Agenda.wsdl");
$server->addFunction("toonAfspraak");
$server->handle();
?>
//deze functie toont afspraken uit een agenda en returned dit in een 2d array
public function toonAfspraak($datum) {
$qString = 'select tijd, afspraken from tbl_agenda WHERE datum = '.$datum.';';
$result = $this->dbClass->doeQuery($qString);
return $result;
}
$server = new SoapServer("Agenda.wsdl");
$server->addFunction("toonAfspraak");
$server->handle();
?>
De webservice werkt helemaal naar behoren maar zou graag willen dat UITEINDELIJK dat programma's in andere talen dit ook zouden kunnen gebruiken.
2.
Ik kan er niet achter komen hoe ik in me WSDL bestand een array type kan definieren ik heb het op deze manier geprobeerd:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
<complexType name="ArrayOfString">
<complexContent>
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType"
wsdl:arrayType="string[]"/>
</restriction>
</complexContent>
</complexType>
?>
<complexType name="ArrayOfString">
<complexContent>
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType"
wsdl:arrayType="string[]"/>
</restriction>
</complexContent>
</complexType>
?>
en dan het op de volgende manier te declareren
Als ik dan een var dump probeer uit te voeren of ie een type correct aangeeft toont ie aan dat het 'unknown' is. dus hij herkent het type niet (dat denk ik zo). Doe ik hier iets verkeerd?
--
Als iemand mij kan helpen met deze twee vragen wordt dit erg gewaardeerd :). Alvast bedankt.
--edit
layout was gaar.
Gewijzigd op 19/10/2010 14:33:02 door Ama saril
Het leuke van het SOAP platform is juist dat het cross-platform is. PHP variabelen worden naar SOAP variabelen gemapped en vice versa en ditzelfde gebeurt met alle andere talen die SOAP ondersteunen.
En zet je code een tussen code-tags: [-code-] en [-/code-], zonder de dashes.
Gewijzigd op 19/10/2010 14:35:06 door Pim -
Pim de Haan op 19/10/2010 14:34:29:
1:
Het leuke van het SOAP platform is juist dat het cross-platform is. PHP variabelen worden naar SOAP variabelen gemapped en vice versa en ditzelfde gebeurt met alle andere talen die SOAP ondersteunen.
En zet je code een tussen code-tags: [-code-] en [-/code-], zonder de dashes.
Het leuke van het SOAP platform is juist dat het cross-platform is. PHP variabelen worden naar SOAP variabelen gemapped en vice versa en ditzelfde gebeurt met alle andere talen die SOAP ondersteunen.
En zet je code een tussen code-tags: [-code-] en [-/code-], zonder de dashes.
Oke bedankt. Dus als ik het goed begrijp zou een programma in java bijvoorbeeld een beroep doen op de server waarna hij een SOAP message terugkrijgt? En dan zou java de SOAP msg 'decoden' of zoiets zodat hij een java array eruitkrijgt? Als dit zo is dan bedankt voor het antwoord :)
Zit nog steeds met het 2e probleem, ben nog ff verder gaan onderzoeken maar krijg gewoon niet het arraytype gedefinieerd.