我在symfony2中有一个简单的web服务,它运行得很好。我添加了一个新方法,但奇怪的是,即使我在WSDL定义中看到它,也无法识别该方法。
请加载:WSDL definition
方法称为GetHoliday
执行该方法的控制器如下:
public function getHolidayAction() {
date_default_timezone_set('America/Santiago');
$request = $this->getRequest();
$client = new \SoapClient('http://' . $request->getHttpHost() . $request->getScriptName() . '/feriados?wsdl');
$year = $request->get('year');
$month = $request->get('month');
$day = $request->get('day');
$types = $client->__getFunctions();
var_dump($types);
die();
$result = $client->GetHoliday('8cd4c502f69b5606a8bef291deaac1ba83bb7727', 'cl', $year, $month, $day);
echo $result;
die();
}
调用__getFunctions调用后,缺少GetHoliday方法。
如果您想查看__getFunctions响应,请加载online site
在输入字段中输入任意日期。响应将以红色显示。
最奇怪的是,这适用于我的开发机器,它也有RedHat操作系统(我的主机是HostGator)。
任何帮助将不胜感激,
答案 0 :(得分:2)
最后,问题是WSDL正在被缓存。
为了进行第一次测试,我使用了
$client = new \SoapClient('http://' . $request->getHttpHost() . $request->getScriptName() . '/feriados?wsdl', array('cache_wsdl' => WSDL_CACHE_NONE) );
实例化SoapClient。这样,它奏效了。所以为了摆脱WSDL_CACHE_NONE参数,我删除了所有以/ tmp文件夹中的wsdl开头的文件。
此致 Jaime