php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #42086 SoapServer return Procedure '' not present for WSIBasic compliant wsdl
Submitted: 2007-07-24 14:13 UTC Modified: 2007-08-31 09:36 UTC
Votes:1
Avg. Score:5.0 ± 0.0
Reproduced:1 of 1 (100.0%)
Same Version:1 (100.0%)
Same OS:1 (100.0%)
From: sanderovich at avaya dot com Assigned: dmitry
Status: Closed Package: SOAP related
PHP Version: 5.2.3 OS: linux
Private report: No CVE-ID:
 [2007-07-24 14:13 UTC] sanderovich at avaya dot com
Description:
------------
When using WSI Basic compliant wsdl, a call to functions without parameters return procedure xxx not found despite the fact that the function exist(they exist both in the wsdl and in the array returned by SoapServer::getFunctions()).
Functions with parameters are being executed correctly.

For example:
A Soap call to : firstFunctionWithoutParam() 
return the following SoapFault:
<?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>Procedure 'firstFunctionWithoutParam' not present
    </faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

despite the fact that the function exist in the return SoapServer::getFunctions()
Array
(
    [0] => firstFunctionWithoutParam
    [1] => secondFunctionWithoutParam
    [2] => firstFunctionClassParam
    [3] => secondFunctionClassParam
)

Soap Data (from $HTTP_RAW_POST_DATA):
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
  <firstFunctionWithoutParam/>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Soap data for Soap call with parameters:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Body>
    <firstFunctionClassParam>
        <param>oren</param>
        <vectparam>one</vectparam>
        <vectparam>two</vectparam>
     </firstFunctionClassParam>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Thanks for your help

Reproduce code:
---------------
A zip file file SoapClient\Server can be found in following link
http://myfreefilehosting.com/f/bf039ff168_0.1MB


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2007-08-01 11:10 UTC] dmitry@php.net
I am not able to get code. Link doesn't work. "The file you are requesting is not accesible due to a hardware or ISP problem. Please retry Later".
 [2007-08-15 01:26 UTC] michael dot tutty at gmail dot com
Here's a minimal WSDL that shows the problem: http://pastebin.com/m18b5d1fc

Here's the class file I used to reproduce with the WSDL above: http://pastebin.com/m28bdf0f0

Here's a test client script: http://pastebin.com/m303880eb
 [2007-08-15 01:47 UTC] michael dot tutty at gmail dot com
Also, the zip file referenced by the O.P. is available as of two minutes ago. Must have been a temporary outage.
 [2007-08-15 02:29 UTC] michael dot tutty at gmail dot com
This bug seems to be the root of the problem. Has it been fixed??

http://bugs.php.net/bug.php?id=30302
 [2007-08-15 06:12 UTC] sanderovich at avaya dot com
I believe that there are here two different problems.
The first is that the Soap client does not create the SoapBody correctly for a function without parameters(the SoapBody is empty), that's why my SoapClient includes the following lines:
if ( $parameters == null)
{
  $return = $itc_client->__soapCall($methodName, array(new SoapParam(null, $methodName)), null, $security_header);
			//  $return = $itc_client->__soapCall($methodName, array(), null, $security_header);
		}   

The second problem is in the SoapServer that does recognize functions without parameters.
 [2007-08-15 08:22 UTC] jani@php.net
Dmitry, feedback was given..
 [2007-08-31 09:36 UTC] dmitry@php.net
This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.


 
PHP Copyright © 2001-2014 The PHP Group
All rights reserved.
Last updated: Sun Apr 20 05:03:19 2014 UTC