Edit report at https://bugs.php.net/bug.php?id=33366&edit=1
ID: 33366 Comment by: jonasraoni at gmail dot com Reported by: cmantunes at gmail dot com Summary: __soapCall Produces Incorrect Request Status: Bogus Type: Bug Package: SOAP related Operating System: Debian PHP Version: 5.1.0 Assigned To: dmitry Block user comment: N Private report: N New Comment: I have the same problem as "cmantunes" (I'm using an WSDL too), and many more at the same request. #1. First argument being ripped off from the XML when calling directly ($client->method(args)) #2. After adding a bogus first parameter, the request got the method name closed and, the param was placed after it, just like the guy mentioned. And, also with the wrong name, the param should be "arg0" and it was displayed as "param1". #3. Even after fixing the request, the response is also misunderstood by the extension! I had to make more workarounds to remove the trailing data (which seems to be part of a standard, the request works fine when I tested with the soapUI client): --uuid:6365a322-9529-4cf5-b3bb-4ed69bd78b38 Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"; Content-Transfer-Encoding: binary Content-ID: <root.mess...@cxf.apache.org> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> [...] --uuid:6365a322-9529-4cf5-b3bb-4ed69bd78b38-- #4. When using Apache 2.2.X on Windows and requesting a WSDL through HTTPS "new SoapClient" crashes Apache. It works fine just on IIS, I tested with several PHP versions and, also the latest (currently 5.3.6). I had tried the suggested code by Dmitry before and it didn't work out. Unhappily I made workarounds at the __doRequest to solve my immediate problems. Previous Comments: ------------------------------------------------------------------------ [2005-06-17 10:03:33] dmi...@php.net Hi, The ext/soap is match easy in usage then you expected. You should use the following code: $isc->getOperationCount(array( 'startDate' => '2005-04-01', 'endDate' => '2005-04-01' )); or $isc->__soapCall('getOperationCount', array( array('getOperationCount' => array( 'startDate' => '2005-04-01', 'endDate' => '2005-04-01' ))); You don't need to use SoapParam if you use WSDL. ------------------------------------------------------------------------ [2005-06-16 20:33:24] cmantunes at gmail dot com As requested, I attempted the same code with the latest snapshot (php5-200506161630) but __soapCall continues to exhibit the same buggy behavior as before. As such, the problem doesn't appear to have been corrected yet. Thank you! ------------------------------------------------------------------------ [2005-06-16 18:56:00] sni...@php.net Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip ------------------------------------------------------------------------ [2005-06-16 18:44:22] cmantunes at gmail dot com Description: ------------ When using SoapClient->__soapCall with parameters, the request is incorrectly encoded regarding the method parameters. The first SoapParam is also ignored. Reproduce code: --------------- #!/usr/bin/php <?php // AdWords API name space $ns="https://adwords.google.com/api/adwords/v2"; // InfoService client $isc=new SoapClient($ns . '/InfoService?wsdl', array('trace'=>1, 'exceptions'=>1) ); try { // // BUG: __soapCall *IGNORES* the first parameter! // That's why 'null' is being used // $params=array(null, new SoapParam('2005-04-01', 'startDate'), new SoapParam('2005-04-30', 'endDate')); // // BUG: This Call produces: // <ns1:getOperationCount/> ->CLOSED ALREADY! // <startDate>2005-04-01</startDate> // <endDate>2005-04-30</endDate> // $isc->__soapCall('getOperationCount', $params); } catch (Exception $e) { print_r($e); } print "Request:\n\n" . $isc->__getLastRequest() . "\n\n\n"; print "Response:\n\n" . $isc->__getLastResponse() . "\n\n\n"; ?> Expected result: ---------------- <ns1:getOperationCount> <startDate>2005-04-01</startDate> <endDate>2005-04-30</endDate> </ns1:getOperationCount> Actual result: -------------- <ns1:getOperationCount/> <startDate>2005-04-01</startDate> <endDate>2005-04-30</endDate> ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=33366&edit=1