Edit report at http://bugs.php.net/bug.php?id=50675&edit=1
ID: 50675 Comment by: kayapo at molnaristvan dot eu Reported by: margaritisz dot oresztesz at dotroll dot hu Summary: SoapClient can't handle object references correctly. Status: Open Type: Bug Package: SOAP related Operating System: Linux PHP Version: 5.2.12 Block user comment: N Private report: N New Comment: I use PHP 5.3.5 (from backports) in Debian GNU/Linux 5.0.7 Lenny. My resoults: PHP SOAP client with Apache2 http request ========================================= kayapo@ponyfarm:~$ wget http***kayapo.dev.molnaristvan.eu/client.php -O - --2011-01-23 10:56:44-- http***kayapo.dev.molnaristvan.eu/client.php kayapo.dev.molnaristvan.eu feloldása⦠192.168.69.60 Csatlakozás a következÅhöz: kayapo.dev.molnaristvan.eu[192.168.69.60]:80⦠kapcsolódva. HTTP kérés elküldve, várakozás válaszra⦠200 OK Hossz: 682 [text/html] Mentés ide: âSTDOUTâ 0% [ ] 0 --.-K/s --- test --- REQUEST: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http***schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:test><firstUser id="ref1"><userId>1</userId><userName>username</userName></firstUser><firstUser href="#ref1"/></SOAP-ENV:test></SOAP-ENV:Body></SOAP-ENV:Envelope> RESPONSE MSG: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http***schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:testResponse><response/></SOAP-ENV:testResponse></SOAP-ENV:Body></SOAP-ENV:Envelope> RESPONSE: object(User)#3 (2) { ["userId":"User":private]=> NULL ["userName":"User":private]=> NULL } 100%[===================================================================================================================================================================================================>] 682 --.-K/s idÅ 0s 2011-01-23 10:56:44 (115 MB/s) -- kiÃrva a szabványos kimenetre [682/682] PHP SOAP client from command line ================================= kayapo@www:~/workspace/site/frontend$ php client.php --- test --- REQUEST: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http***schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:test><firstUser id="ref1"><userId>1</userId><userName>username</userName></firstUser><firstUser href="#ref1"/></SOAP-ENV:test></SOAP-ENV:Body></SOAP-ENV:Envelope> RESPONSE MSG: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http***schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:testResponse><response/></SOAP-ENV:testResponse></SOAP-ENV:Body></SOAP-ENV:Envelope> RESPONSE: object(User)#3 (2) { ["userId":"User":private]=> NULL ["userName":"User":private]=> NULL } Previous Comments: ------------------------------------------------------------------------ [2011-01-23 00:10:52] bulk at janoszen dot hu Confirmed in PHP 5.3.4, still the same bug. The only fix for us is porting the SOAP library from 5.2.0, which has other, more manageable bugs. ------------------------------------------------------------------------ [2010-07-06 07:20:53] bulk at janoszen dot hu Is somebody looking into this? ------------------------------------------------------------------------ [2010-01-15 12:05:15] margaritisz dot oresztesz at dotroll dot hu Package on the previous link is damaged. Source code can be found at: http://code.dotroll.com/files/bugreports/php-50675-soaprefs/soap.tar.gz ------------------------------------------------------------------------ [2010-01-13 13:53:38] srina...@php.net the client.php that you attached is tar.gz of the same server side code. pl.attach / provide appropriate client reproduce code ------------------------------------------------------------------------ [2010-01-06 08:46:33] margaritisz dot oresztesz at dotroll dot hu Description: ------------ When sending the same object multiple times in a SOAP call, SoapClient replaces the object with a href='..' object reference. However the client generates the request envelope with an incorrect parameter name, so the server does not get the referenced object. Reproduce code: --------------- Sources of a simple server and client could be found at the following URL: http://charlie.extra.hu/php-soap/soap.tar.gz If I run client.php, it gets back an object filled with null parameters. It should recieve the first object sent to the server. If I change the reference's parameter name to 'secondUser', the SOAP response includes the correct object. Expected result: ---------------- Expected the following soap envelope to be sent: <SOAP-ENV:test> <firstUser id="ref1"> <userId>1</userId> <userName>user</userName> </firstUser> <secondUser href="#ref1"/> </SOAP-ENV:test> Actual result: -------------- Got this request: <SOAP-ENV:test> <firstUser id="ref1"> <userId>1</userId> <userName>user</userName> </firstUser> <firstUser href="#ref1"/> </SOAP-ENV:test> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=50675&edit=1