未捕获的SoapFault异常:[Client]函数不是此服务的有效方法

时间:2011-12-02 10:16:31

标签: php soap wsdl

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

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

任何帮助?

5 个答案:

答案 0 :(得分:25)

如果要执行SOAP无法找到的功能 - PHP可能会缓存wsdl文件。

添加:

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

禁用缓存。

答案 1 :(得分:2)

两种可能的解决方案:

  1. 尝试查看该功能是否真的存在于其中的代码片段:PHP SoapClient request: not a valid method for this service
  2. 此外,一旦显示了可用函数调用列表,请注意,如果您的WSDL是由Java SOAP服务器生成的,则可能有多个名为“service”(或具有相同名称)的函数。 PHP SOAP客户端只能识别和使用第一个。您需要手动重命名WSDL中的所有内容!

答案 2 :(得分:0)

只需在函数顶部的注释中添加参数,返回类型和Web服务方法。它会工作。我尝试了它的工作。

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

答案 3 :(得分:0)

I had this problem and finally decided to check my php error log.

In php.ini enable always_populate_raw_post_data = -1 and restart the server .

My PHP version is 5.6.8

答案 4 :(得分:-1)

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

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

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