ID: 43462 Comment by: andy at webtatic dot com Reported By: andrew at is dot co dot za Status: No Feedback Bug Type: SOAP related Operating System: Fedora Core release 6 PHP Version: 5.2.5 New Comment:
This is still an issue in PHP 5.2.10, please reopen. Without throwing a Soap exception, you can't trust a call to have worked correctly. Previous Comments: ------------------------------------------------------------------------ [2009-05-06 01:00:00] php-bugs at lists dot php dot net No feedback was provided for this bug for over a week, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open". ------------------------------------------------------------------------ [2009-04-28 18:34:42] j...@php.net Please try using this CVS snapshot: http://snaps.php.net/php5.2-latest.tar.gz For Windows: http://windows.php.net/snapshots/ ------------------------------------------------------------------------ [2007-11-30 10:57:26] andrew at is dot co dot za Description: ------------ SOAPClient does not report an error when it issues a request to a server and that server returns an empty document instead of a valid SOAP response. In the client.php script below, setting $break_me=false results in SOAPClient not reporting an error. Setting $break_me=true results in the SOAPFault 'looks like we got no XML document'. Both cases should return this error. Reproduce code: --------------- server.php: <?php $break_me = false; if ($break_me) echo "Corrupt XML data"; ?> client.php: <?php $client = new SoapClient(dirname(__FILE__) . '/soaptest.wsdl', array('exceptions' => false)); $ret = $client->Test123(); if (is_soap_fault($ret)) echo "SOAP Fault: " . $ret->faultstring; else echo "Result: '$ret'"; ?> soaptest.wsdl: <?xml version="1.0"?> <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn:soaptest" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="urn:soaptest"> <types> <xsd:schema targetNamespace="urn:soaptest"/> </types> <message name="Test123Input"/> <message name="Test123Output"> <part name="return" type="xsd:string"/> </message> <portType name="SOAPTestPortType"> <operation name="Test123"> <input message="tns:Test123Input"/> <output message="tns:Test123Output"/> </operation> </portType> <binding name="SOAPTestBinding" type="tns:SOAPTestPortType"> <soap:binding xmlns="http://schemas.xmlsoap.org/wsdl/soap/" style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation xmlns:default="http://schemas.xmlsoap.org/wsdl/soap/" name="Test123"> <input xmlns:default="http://schemas.xmlsoap.org/wsdl/soap/"> <soap:body xmlns="http://schemas.xmlsoap.org/wsdl/soap/" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:soaptest"/> </input> <output xmlns:default="http://schemas.xmlsoap.org/wsdl/soap/"> <soap:body xmlns="http://schemas.xmlsoap.org/wsdl/soap/" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:soaptest"/> </output> </operation> </binding> <service name="SOAPTestService"> <port xmlns:default="http://schemas.xmlsoap.org/wsdl/soap/" name="SOAPTestPort" binding="tns:SOAPTestBinding"> <soap:address xmlns="http://schemas.xmlsoap.org/wsdl/soap/" location="http://localhost/server.php"/> </port> </service> </definitions> Expected result: ---------------- $ret in client.php should be a SOAPFault indicating that the server did not return an XML document Actual result: -------------- $ret == null, resulting in output of "Result: ''" There is no way do distinguish this null value from a null value legitimately returned by a function on the SOAP server. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=43462&edit=1