Edit report at https://bugs.php.net/bug.php?id=49155&edit=1

 ID:                 49155
 Updated by:         yohg...@php.net
 Reported by:        jeroen at asystance dot nl
 Summary:            SoapServer passes parameters as null if one has
                     special wsdl definition
-Status:             Open
+Status:             Feedback
 Type:               Bug
 Package:            SOAP related
 Operating System:   linux
 PHP Version:        5.3.3
 Block user comment: N
 Private report:     N

 New Comment:

Please try using this snapshot:

  http://snaps.php.net/php5.4-latest.tar.gz
 
For Windows:

  http://windows.php.net/snapshots/

I see several fixes in soap module. Could you try 5.4?


Previous Comments:
------------------------------------------------------------------------
[2012-04-26 08:30:22] nicolodien at gmx dot de

Hi everybody

I just want to confirm that this is still an issue! I've spent more than 3 
hours debugging until I finally found this bug description giving me a 
solution. 

Please DO fix this problem...
Thanks

------------------------------------------------------------------------
[2011-02-11 12:25:22] jeroen at asystance dot nl

Just wanted to verify that this bug is still present in 5.3.3

------------------------------------------------------------------------
[2009-08-05 12:22:29] jeroen at asystance dot nl

Sorry for posting yet another comment, but it gets even weirder:

<wsdl:message name="someRequest">
  <wsdl:part name="customerId" element="tns:customerId"></wsdl:part>
  <wsdl:part name="customerDetails" element="tns:customer"></wsdl:part>
</wsdl:message>
This will not work, because in the first part, the name==element

However,
<wsdl:message name="someRequest">
  <wsdl:part name="customerId" element="tns:customerId"></wsdl:part>
  <wsdl:part name="customer" element="tns:customer"></wsdl:part>
</wsdl:message>
_will_ work! Notice that now both parts are specified with name==element!


My conclusion so far is that either _all_ of the parts need to be specified 
with the name==element pattern, or _none_. If one of the parts uses the 
pattern, the rest needs to conform, or else the SoapServer passes them as null.

I sure hope this helps! I've been struggling with this for a while now.

------------------------------------------------------------------------
[2009-08-05 11:53:25] jeroen at asystance dot nl

I have been able to further pin down the bug. The 2nd parameter is passed as 
null if, in the <wsdl:message> definition, the 1st <wsdl:part> element's name 
attribute is the same as the element attribute!

<wsdl:message name="someRequest">
  <wsdl:part name="customerId" element="tns:customerId"></wsdl:part>
  <wsdl:part name="fail" element="tns:customerId"></wsdl:part>
</wsdl:message>
Here the 1st parameter works, but the second is always null!

<wsdl:message name="someRequest">
  <wsdl:part name="cid" element="tns:customerId"></wsdl:part>
  <wsdl:part name="win" element="tns:customerId"></wsdl:part>
</wsdl:message>
Now both parameters work.


More generally, if one <wsdl:part> is specified in this way (name and element 
are the same), _every other parameter_ is passed as null:

<wsdl:message name="someRequest">
  <wsdl:part name="p1" element="tns:customerId"></wsdl:part>
  <wsdl:part name="customerId" element="tns:customerId"></wsdl:part>
  <wsdl:part name="p3" element="tns:customerId"></wsdl:part>
</wsdl:message>
Here, p1 and p2 will be null, and customerId will work.

Happy bugfixing! :)

------------------------------------------------------------------------
[2009-08-04 14:47:58] jeroen at asystance dot nl

Description:
------------
I have a WSDL with three types: "customerId", "customer" and "order".

Calling a function with just a customer works, but a calling a function with 
parameters (customerId, customer) does not - the customer parameter is always 
null.

Another function, specified as (customerId, order), always works, so the 
problem is not using more than one parameter (which could be a problem since 
I'm using document/literal, and having more than one message part does not 
conform to WS-I).

I have also tried switching the parameters and lots of other things but I 
cannot find the underlying problem.

Reproduce code:
---------------
http://jayvee.nl/soaptest.tar

This includes a php file that runs a client as well as a server - so be sure to 
change the service URL in interface.wsdl before you run this.

Expected result:
----------------
When SoapServer calls function addCustomer ( $p1, $p2 ), $p2 should be a 
stdClass object (or array)

Actual result:
--------------
$p2 is null


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=49155&edit=1

Reply via email to