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:: __getLastResponse
SoapClient::__getLastResponseHeaders
SoapClient::__setCookie
SoapClient::_cookies
__call
__doRequest
__doRequest
そのため、結果としてCookieを設定して取得するコンストラクターリクエストをカスタマイズすることはできません。このため、コンストラクター要求が新しいセッションを起動するため、アプリケーションセッション管理が正しく機能しませんが、応答でjsessionidcookieを取得できません。
ソースコードを検索し::__construct
て、Cookieでサポートされている独自のコードで上書きしようとしましたが、何もしませんでした。
__call
オーバーライドまたは関数に基づくSOAPリクエストにCURLを使用するためのインターネットのすべてのヒントです__doRequest
が、コンストラクターはそれらを使用しません。
カスタムリクエストでコンストラクターを拡張するにはどうすればよいですか?
アップデート:
コンストラクターでファイルをフェッチせず、カスタマイズされていない要求を送信しない非WSDLモードでsoapclientを使用しました。ヒントをありがとう、問題は解決しました。