SoapClient::__getLastRequest()
(PHP 5, PHP 7)
Returns last SOAP request
说明
public SoapClient::__getLastRequest(void): string
Returns the XML sent in the last SOAP request.
Note:This method works only if the SoapClient object was created with thetraceoption set to
TRUE
.
参数
此函数没有参数。
返回值
The last SOAP request, as an XML string.
范例
Example #1 SoapClient::__getLastRequest()example
<?php $client = new SoapClient("some.wsdl", array('trace' => 1)); $result = $client->SomeFunction(); echo "REQUEST:\n" . $client->__getLastRequest() . "\n"; ?>
参见
- SoapClient::__getLastRequestHeaders() Returns the SOAP headers from the last request
- SoapClient::__getLastResponse() Returns last SOAP response
- SoapClient::__getLastResponseHeaders() Returns the SOAP headers from the last response
Adding htmlentities() can be helpful since it makes the XML visible in your browser without needing to view the source. <?php echo "REQUEST:\n" . htmlentities($client->__getLastRequest()) . "\n"; ?>
Note that when you create SoapClient with option "trace" set to FALSE or omit it, than "__getLastRequest()" always returns NULL.
I guess many peoples calls getLastRequest and it returns nothing. "Heey where is the my last request". Now we will see our request, when you created a SoapClient instance, you should give a option parameter as below : <?php // below $option=array('trace',1); // correct one is below $option=array('trace'=>1); $client=new SoapClient('some.wsdl',$option); try{ $client->aMethodAtRemote(); }catch(SoapFault $fault){ // <xmp> tag displays xml output in html echo 'Request : <br/><xmp>', $client->__getLastRequest(), '</xmp><br/><br/> Error Message : <br/>', $fault->getMessage(); } ?> "trace" parameter enables output of request. Now, you should see SOAP request.
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.
Creating an xml file and link to the file is my way. $outputxml = '/output.xml'; file_put_contents($_SERVER['DOCUMENT_ROOT'] . $outputxml, $client->__getLastRequest()); echo '<a href="' . $outputxml . '">here</a>';
the getLastResult function doesn't require that the server answers. as my browser handled and hided the xml code I thought the function doesn't return the last request