Hallo,

Weet iemand hier hoe ik php arrays naar en van een webservice kan
zenden/ontvangen?

Ik ben er in geslaagd om een php array naar mijn webservice te sturen en er
een terug te ontvangen (zie onderstaande code). Ik gebruik de PHP5 SOAP
extensie.

In mijn wsdl file heb ik de request en response message parts het type
xsd:Array gegeven. Ik weet dat dat eigenlijk niet goed is maar het gekke is
dat het wel perfect werkt!

Toch wil ik uiteraard alles correct doen en vandaar mijn vraag hier: weet
iemand hoe ik php arrays naar en van een webservice kan zenden/ontvangen.

Ik vraag mij met name af hoe ik .e.e.a. in het wsdl file moet doen. Ik weet
zelf nog niet erg veel van wsdl maar heb wel veel postings gezien over
ComplexType etc maar de oplossing heb ike r niet tussen kunnen vinden
helaas.

Marcel

CODE:

/*** CLIENT ***/:
// soapclient
$client = new SoapClient("http://www.test.nl/webservice/test.wsdl");

// array to send
$arr['amount1'] = 1233;
$arr['amount2'] = 2;

// call getResult method
print_r($client->getResult($arr));


/*** SERVER ***/:
class result{

public function getResult($arr) {

$out = array();

$out['result1'] = $arr['amount1'] * $arr['amount2'];
$out['result2'] = $arr['amount1'] / $arr['amount2'];

return $out;

}

}

ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache

$server = new SoapServer("http://www.test.nl/webservice/test.wsdl");

$server->setClass("premieberekening");

$server->handle();


/*** WSDL ***/:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:tns=" http://example.org/test"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:ns="http://example.org/test"
name="test" targetNamespace="http://example.org/test">

<message name="getResultRequest">
<part name="arr" type="xsd:Array"/>
</message>
<message name="getResultResponse">
<part name="result" type="xsd:Array"/>
</message>
<portType name="TESTPortType">
<operation name="getResult">
<input message="tns:getResultRequest"/>
<output message="tns:getResultResponse"/>
</operation>
</portType>
<binding name="TESTBinding" type="tns:TESTPortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getResult">
<soapperation soapAction="urn:test-result#getResult"/>
<input>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:test-result"/>
</input>
<output>
<soap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:test-result"/>
</output>
</operation>
</binding>
<service name="TESTService">
<port name="TESTPort" binding="TESTBinding">
<soap:address
location="http://www.test.nl/webservice/server.php"/>
</port>
</service>
</definitions>