0
私は発見したが、運がない、いくつかの潜在的な解決策(たとえば、ob_を使用)を試しました。どのように発信するsoapclient要求をキャプチャするのですか?
デバッグするために発信要求を画面に表示したいと考えています。
私は発見したが、運がない、いくつかの潜在的な解決策(たとえば、ob_を使用)を試しました。どのように発信するsoapclient要求をキャプチャするのですか?
デバッグするために発信要求を画面に表示したいと考えています。
SoapClientを拡張し、_soapcall()と_doRequest()のようなオーバーライドメソッドを拡張してSoapClientのデバッグを行った。私のプロジェクトでは、XML/arguementsをファイルに書き込むロガーを持っています。
私の例では、_ soapCall()と _doRequest()両方を含みます。私は両方の方法で異なるものを印刷します。あなたのデバッグニーズに合うかもしれません。私は__soapCall()から$ argsの出力を読み込み、XMLをSoapUIにコピーして検証する(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_dumpのために代わりに使用することができます:私の人生のために
logger('debug', $this->__getLastRequest());
私は__soapCallをオーバーライドすることはできませんなぜ、私が把握することはできません。私はあなたが提供したように関数を定義し、取得されません。 –