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

    (PHP 5, PHP 7)

    Returns last SOAP response

    说明

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