1

PHP SoapClientを使用して、JAVAアプリケーションを操作しています。

これが私の拡張SoapClientクラスの擬似コードです:

class MyClient extends SoapClient {

  public function __construct($url) {
    $params = Array (
        'login' => 'some_login',
        'password' => 'some_password',
        'trace' => true,
        'exceptions' => true,
        'connection_timeout' => 10,
        'cache_wsdl' => WSDL_CACHE_NONE,
        'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
        'encoding' => 'UTF-8'
    );

    try {
      parent::__construct($url, $params);
    }
    catch(Exception $e) {
      /* some logging action */
    }
    catch(SoapFault $e) {
      /* some logging action */
    }
}

そこで、クラスを使用して新しいオブジェクトを作成します。

$obj = new MyClient("http://location/file.wsdl");

そして、それに応じてxml構造を取得するためのGETリクエストを送信します。

GET /file.wsdl HTTP/1.0
Host: location
Authorization: Basic ....

問題は、コンストラクターでも、、、SoapClient::__getLastRequestおよびを使用できないことです。これらの関数はすべて、後またはのみ有効ですが、コンストラクターは起動しません。SoapClient:: __getLastResponseSoapClient::__getLastResponseHeadersSoapClient::__setCookieSoapClient::_cookies__call__doRequest__doRequest

そのため、結果としてCookieを設定して取得するコンストラクターリクエストをカスタマイズすることはできません。このため、コンストラクター要求が新しいセッションを起動するため、アプリケーションセッション管理が正しく機能しませんが、応答でjsessionidcookieを取得できません。

ソースコードを検索し::__constructて、Cookieでサポートされている独自のコードで上書きしようとしましたが、何もしませんでした。

__callオーバーライドまたは関数に基づくSOAPリクエストにCURLを使用するためのインターネットのすべてのヒントです__doRequestが、コンストラクターはそれらを使用しません。

カスタムリクエストでコンストラクターを拡張するにはどうすればよいですか?


アップデート:

コンストラクターでファイルをフェッチせず、カスタマイズされていない要求を送信しない非WSDLモードでsoapclientを使用しました。ヒントをありがとう、問題は解決しました。

4

0 に答える 0