Uncaught SoapFault exception: [Client] Function不是此服务的有效方法


Uncaught SoapFault exception: [Client] Function is not a valid method for this service

当我尝试访问wsdl中的函数与一些数据(使用php中的soap客户端)时,我得到以下错误。

Uncaught SoapFault exception: [Client] Function function_nameis not a valid method for this service

帮忙吗?

如果您想执行SOAP无法找到的函数- PHP可能缓存了wsdl文件。

添加:

ini_set("soap.wsdl_cache_enabled", "0");

两种可能的解决方案:

  1. 尝试查看函数是否真的存在,代码片段在那里:PHP SoapClient请求:这个服务不是一个有效的方法
  2. 另外,一旦您显示了可用函数调用的列表,请注意,如果您的WSDL是由Java SOAP服务器生成的,那么您可能有几个名为"service"(或具有相同名称)的函数。PHP SOAP客户机将只识别和使用第一个。您需要手动重命名WSDL中的所有文件!

我遇到了这个问题,最后决定检查我的php错误日志。

php.ini启用always_populate_raw_post_data = -1并重启服务器

我的PHP版本5.6.8

只需在函数顶部的注释中添加web服务的参数、返回类型和方法。它会成功的。我试过了。

/**
 * @param string the symbol of the stock
 * @return float the stock price
 * @soap
 */
public function getPrice($symbol)
{
    //...return stock price for $symbol
}

在我们的情况下,从PHP5.6升级到PHP7时发生了此异常。对于我们来说,禁用WSDL缓存也是有效的。

ini_set("soap.wsdl_cache_enabled", "0");

参见:http://lornajane.net/posts/2015/soapfault-when-switching-php-versions