SoapClient无法识别我在WSDL中看到的函数

时间:2014-03-24 16:57:29

标签: web-services symfony soap wsdl soap-client

我在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)。

任何帮助将不胜感激,

1 个答案:

答案 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