SoapClient::__getLastResponse()
(PHP 5, PHP 7)
Returns last SOAP response
说明
public SoapClient::__getLastResponse(void): string
Returns the XML received in the last SOAP response.
Note:This method works only if the SoapClient object was created with thetraceoption set to
TRUE
.
参数
此函数没有参数。
返回值
The last SOAP response, as an XML string.
范例
Example #1 SoapClient::__getLastResponse()example
<?php $client = SoapClient("some.wsdl", array('trace' => 1)); $result = $client->SomeFunction(); echo "Response:\n" . $client->__getLastResponse() . "\n"; ?>
参见
- SoapClient::__getLastResponseHeaders() Returns the SOAP headers from the last response
- SoapClient::__getLastRequest() Returns last SOAP request
- SoapClient::__getLastRequestHeaders() Returns the SOAP headers from the last request
D'oh! That example needs: $soapClient = new SoapClient($url, array('trace'=>1)); to turn ON tracing in the first place.
You almost for sure will need to wrap a try/catch block around your SOAP call in order to use these to debug something that's not working. Otherwise, PHP throws a fatal error before you can execute this function. For example: <?php $soapClient = new SoapClient($url); echo htmlentities($soapClient->__getFunctions()); //Assume that has output 'someFunction' (among others) try { $results = $soapClient->someFunction(...); } catch (SoapFault $soapFault) { var_dump($soapFault); echo "Request :<br>", htmlentities($soapClient->__getLastRequest()), "<br>"; echo "Response :<br>", htmlentities($soapClient->__getLastResponse()), "<br>"; } ?> Without try/catch, your just get the Fatal Error and PHP commits suicide before you can call __getLastRequest/__getLastResponse
Just to make it a bit more readable echo "REQUEST:\n" . htmlentities(str_ireplace('><', ">\n<", $client->__getLastRequest())) . "\n"; echo "RESPONSE:\n" . htmlentities(str_ireplace('><', ">\n<", $client->__getLastResponse())) . "\n"; PS: If you are using \n then you need to enclose above statements in <pre>. You can also use <br />, but it gets a bit messy.
You don't need to surround SoapClient in a try-catch block. Just set the "exceptions" option to false, and the SoapFault instance will be returned instead of thrown.