PHP SoapClient :: __构造非自定义请求

时间:2013-01-17 18:07:58

标签: php constructor soap-client

我使用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");

并发送GET请求以获取响应中的xml结构:

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

问题是我无法在构造函数中使用SoapClient::__getLastRequestSoapClient:: __getLastResponseSoapClient::__getLastResponseHeadersSoapClient::__setCookie,甚至SoapClient::_cookies,因为所有这些函数都是如此仅在__call__doRequest之后有效,但构造函数永远不会触发__doRequest

所以我无法自定义构造函数请求来设置和获取结果中的cookie。因此,我的应用程序会话管理无法正常工作,因为构造函数请求触发了一个新会话,但我无法在响应中获取jsessionid cookie。

我尝试搜索::__construct源代码,用我自己的cookie支持的代码覆盖它,但没有。

互联网上的所有提示都是基于覆盖__call__doRequest函数来使用CURL进行SOAP请求,但构造函数不使用它们。

请问,我如何使用自定义请求扩展构造函数?


更新

我刚刚在非WSDL模式下使用了soapclient,它不会在构造函数中获取文件,也不会发送任何非自定义请求。谢谢你的提示,问题解决了。

0 个答案:

没有答案