• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • SoapClient::__getLastRequest()

    (PHP 5, PHP 7)

    Returns last SOAP request

    说明

    publicSoapClient::__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