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] [email protected]
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