Bug #73747 [Opn]: SoapClient::__getLastResponse() is empty if SoapFault raised
| From: | richardh at channelgrabber dot com | Date: | Thu, 15 Dec 2016 09:47:44 +0000 |
| Subject: | Bug #73747 [Opn]: SoapClient::__getLastResponse() is empty if SoapFault raised | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-206029@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=73747&edit=1
ID: 73747
User updated by: richardh at channelgrabber dot com
Reported by: richardh at channelgrabber dot com
Summary: SoapClient::__getLastResponse() is empty if
SoapFault raised
Status: Open
Type: Bug
Package: SOAP related
Operating System: Ubuntu 14.04.1 LTS
PHP Version: 7.1.0
Block user comment: N
Private report: N
New Comment:
I couldn't post the actual expected result as the bug submitter was treating the soap request
and response as spam, but for completeness please see this gist https://gist.github.com/RichardHeelin/47e701fdf0bc9a5d54de5d866f949280.
Previous Comments:
------------------------------------------------------------------------
[2016-12-15 09:43:12] richardh at channelgrabber dot com
Description:
------------
If you configure a SoapClient with both
exceptions and trace set to TRUE,
and the server errors with a SoapFault, the client throws a php SoapFault exception.
In php 5.6, if the SoapFault was caught, you could ask the SoapClient for the request
SoapClient::__getLastRequest() and response
SoapClient::__getLastResponse() to investigate the issue. However with php 7.1, and 7.0
it seems, both methods return an empty string if a SoapFault was thrown.
Expected behaviour is the return of the failed request and response so you can investigate the
issue.
We have been able to reproduce the issues by testing against a mock server created with SoapUI
(https://www.soapui.org/downloads/soapui.html) against a simple example wsdl
(https://www.tutorialspoint.com/wsdl/wsdl_example.htm), by setting the response to always be a
SoapFault.
Test script:
---------------
<?php
$soapClient = new SoapClient(
'./HelloService.wsdl',
[
'location' => 'http://127.0.0.1:8080',
'trace' => true,
'exceptions' => true
]
);
try {
$soapClient->sayHello('Php');
} catch (SoapFault $exception) {
echo 'Request: ' . trim($soapClient->__getLastRequest()) . PHP_EOL;
echo PHP_EOL;
echo 'Response: ' . trim($soapClient->__getLastResponse()) . PHP_EOL;
}
Expected result:
----------------
Request: <XML REQUEST>
Response: <XML RESPONSE>
Actual result:
--------------
Request:
Response:
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=73747&edit=1