Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何捕获传出的soapclient请求?_Php_Soap Client - Fatal编程技术网

Php 如何捕获传出的soapclient请求?

Php 如何捕获传出的soapclient请求?,php,soap-client,Php,Soap Client,我已经尝试了一些可能的解决方案(例如使用ob_u),但没有任何运气 我希望能够显示以筛选传出请求,以便对其进行调试。我已经通过扩展和重写方法(如和)调试了SoapClient。在我的项目中,我有一个将XML/参数写入文件的记录器 我的示例包括\u soapCall()和\u doRequest()。我用两种方法打印出不同的东西。可能适合您的调试需要。我喜欢从_soapCall()读取$args输出,并喜欢将XML复制到中进行验证(Alt+V)。如果您正在调试身份验证或其他错误情况,HTTP头也可

我已经尝试了一些可能的解决方案(例如使用ob_u),但没有任何运气


我希望能够显示以筛选传出请求,以便对其进行调试。

我已经通过扩展和重写方法(如和)调试了SoapClient。在我的项目中,我有一个将XML/参数写入文件的记录器

我的示例包括\u soapCall()\u doRequest()。我用两种方法打印出不同的东西。可能适合您的调试需要。我喜欢从_soapCall()读取$args输出,并喜欢将XML复制到中进行验证(Alt+V)。如果您正在调试身份验证或其他错误情况,HTTP头也可能很有趣

class MySoapClient extends SoapClient {
    public function __soapCall ($function_name, array $args, array $options = null, $input_headers = null, array &$output_headers = null) {
        // Dump $args to file, browser printout, console, etc
        var_dump($args);

        parent::__soapCall ($function_name, $args, $options, $input_headers, $output_headers);

        // XML request and response:
        var_dump($this->__getLastRequest()); // Request sent to server
        var_dump($this->__getLastResponse()); // Response from server

        // HTTP headers:
        var_dump($this->__getLastRequestHeaders());
        var_dump($this->__getLastResponseHeaders());
    }

    public function __doRequest ( string $request , string $location , string $action , int $version, int $one_way = 0 ) {
        var_dump($request); // XML

        $response = parent::__doRequest ($request, $location, $action, $version, $one_way);
        var_dump($response); // XML

        return $response;
    }
}

$webservice = new MySoapClient('http://example.com/myservice?wsdl');
$webservice->__soapCall('SomeOperation', array($someArguments));
记录器可用于var_转储:

logger('debug', $this->__getLastRequest());

就我个人而言,我不明白为什么我不能覆盖soapCall。我定义了您提供的函数,但它不会被拾取。