我使用 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::__getLastRequest
,和SoapClient:: __getLastResponse
,因为所有这些函数在之后或仅在之后才有效,但构造函数永远不会触发。SoapClient::__getLastResponseHeaders
SoapClient::__setCookie
SoapClient::_cookies
__call
__doRequest
__doRequest
所以我不能自定义构造函数请求来设置和获取cookies。因此,我的应用程序会话管理无法正常工作,因为构造函数请求会触发一个新会话,但我无法在响应中获取 jsessionid cookie。
我试图搜索::__construct
源代码以用我自己的支持 cookie 的代码覆盖它,但什么也没有。
Internet 上的所有提示,以基于覆盖__call
或__doRequest
函数将 CURL 用于 SOAP 请求,但构造函数不使用它们。
请问,有什么想法可以用自定义请求扩展构造函数吗?
更新:
我只是在非 WSDL 模式下使用了 soapclient,它不会在构造函数中获取文件,也不会发送任何未自定义的请求。谢谢你的提示,问题解决了。