当我尝试访问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");
两种可能的解决方案:
- 尝试查看函数是否真的存在,代码片段在那里:PHP SoapClient请求:这个服务不是一个有效的方法
- 另外,一旦您显示了可用函数调用的列表,请注意,如果您的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