我正在使用带有WSDL的PHP SoapClient。 Web服务返回这样的功能:
0. BaseHotelSearchRsp service(HotelSearchAvailabilityReq $parameters)
1. HotelMediaLinksRsp service(HotelMediaLinksReq $parameters)
2. HotelDetailsRsp service(HotelDetailsReq $parameters)
当我以这种方式调用服务时:
$mySoapClient = new \SoapClient($wsdl_location);
$mySoapClient->__soapCall('service', array($params));
始终使用0. BaseHotelSearchRsp service(HotelSearchAvailabilityReq $parameters)
参数调用方法HotelSearchAvailabilityReq
。
甚至$mySoapClient
在$params
个合适的参数上验证HotelSearchAvailabilityReq
(即它不包含在SOAP请求传递的参数中,这些参数对HotelSearchAvailabilityReq
数据类型无效)。
问题将如何调用另一种服务方法?即2. HotelDetailsRsp service(HotelDetailsReq $parameters)
答案 0 :(得分:2)
我假设每个参数HotelSearchAvailabilityReq
,HotelMediaLinksReq
和HotelDetailsReq
都是从基础结构继承的,或者可能不是。但是,如果为每个结构类型使用不同的类并使用classmap选项,它可能会起作用。
如果它不起作用,那么我已经遇到了这个问题并且必须覆盖SoapClient::__doRequest
方法以更新发送的XML请求,以确保发送的元素具有良好的类型。
您是否使用WSDL到php生成器来简化请求创建和发送过程?你试过PackageGenerator吗?
答案 1 :(得分:-2)
简单,称之为功能:
$client = new SoapClient ($wsdl_location);
$response = $client->HotelDetails($params);