ID: 44265
Comment by: benprim at gmail dot com
Reported By: gdk-spam at yes-co dot nl
Status: Open
Bug Type: SOAP related
Operating System: Debian r4.0
PHP Version: 5.2.5
New Comment:
I had the same issue when i change my WSDL from RPC/Encoded to document
literal.
But i think the problem comes from the former way i Use to return my
results.
My Response message looks something like this
<xsd:element name="UpdateUserResponseParams">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ReturnValue" type="boolean"></xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
So i had to change my server code from
function updateUser($user){
// Internal Code
return $value;
}
to
function updateUser($user){
// Internal Code
return array("ReturnValue" => $value);
}
So I think your server client should be changed to
public function GetKadastraalBericht($request) {
$response = new StdClass();
return array("Letter" => $response->Letter,"Volgnummer"
=>$response->Volgnummer);
}
Previous Comments:
------------------------------------------------------------------------
[2008-02-27 13:54:34] gdk-spam at yes-co dot nl
Description:
------------
The PHP SOAP server incorrectly reports an SOAP-ERROR when the SOAP
response is returned in WSDL mode. The error indicates an optional
property is missing. The property is defined within a XML Schema
sequence which has its 'minOccurs' attribute set to '0', which should
make the properties optional.
The WSDL validates correctly against WS-I Basic Profile 1.1 + SOAP
Binding Profile 1.0 checks using Mindreef SOAPscope.
We recently upgraded from PHP 5.1.4 to PHP 5.2.4 (ZendCore package). We
are unable to reproduce this error in 5.1.4.
We've stripped down the Webservice and request/response, the production
code is ofcourse much more complicated.
If you uncomment the 'Letter' and 'Volgnummer' properties the SOAP
response is returned without a problem
Reproduce code:
---------------
WSDL: http://devel.yes-co.com/zendbugs/ws_kadaster.wsdl
SOAP Server: http://devel.yes-co.com/zendbugs/ws_kadaster.phps
SOAP Client: http://devel.yes-co.com/zendbugs/ws_kadaster_client.phps
Expected result:
----------------
ws_kadaster_client.php output:
stdClass Object ( )
Actual result:
--------------
ws_kadaster_client.php output:
SoapFault Object
(
[message:protected] => SOAP-ERROR: Encoding: object hasn't 'Letter'
property
[string:private] =>
[code:protected] => 0
[file:protected] =>
/vol/vol0/home/geoffrey/public_html/ws_kadaster_client.php
[line:protected] => 11
[trace:private] => Array
(
[0] => Array
(
[function] => __call
[class] => SoapClient
[type] => ->
[args] => Array
(
[0] => GetKadastraalBericht
[1] => Array
(
[0] => stdClass Object
(
)
)
)
)
[1] => Array
(
[file] =>
/vol/vol0/home/geoffrey/public_html/ws_kadaster_client.php
[line] => 11
[function] => GetKadastraalBericht
[class] => SoapClient
[type] => ->
[args] => Array
(
[0] => stdClass Object
(
)
)
)
)
[faultstring] => SOAP-ERROR: Encoding: object hasn't 'Letter'
property
[faultcode] => SOAP-ENV:Server
)
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://webservice.yes-co.nl/ws_kadaster"><SOAP-ENV:Body><ns1:GetKadastraalBerichtRequest/></SOAP-ENV:Body></SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>SOAP-ERROR:
Encoding: object hasn't 'Letter'
property</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=44265&edit=1