加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP SOAP Procedure’functionName’不存在

发布时间:2020-12-13 13:35:51 所属栏目:PHP教程 来源:网络整理
导读:我正在Symfony中编写一个SOAP应用程序,并且对于我的所有请求,我收到错误.过程’getClusterName’不存在. 奇怪的是,当我在纯PHP中创建测试SOAP应用程序时,它工作正常,但Symfony中的相同代码返回错误. 另一个奇怪的事情是,在SOAP服务器代码中,我列出了带有$ser
我正在Symfony中编写一个SOAP应用程序,并且对于我的所有请求,我收到错误.过程’getClusterName’不存在.

奇怪的是,当我在纯PHP中创建测试SOAP应用程序时,它工作正常,但Symfony中的相同代码返回错误.

另一个奇怪的事情是,在SOAP服务器代码中,我列出了带有$server-> getFunctions()的可用服务函数,它返回服务函数的数组,并且getClusterName在该数组中.因此该功能对于服务器是已知的,但它无法调用它.

在Symfony中编写服务时,我遵循this article,这是我的代码:

客户:

namespace PrjSoapBundleController;

class SoapController extends Controller
{
    public function indexAction()
    {
        $client = new SoapClient('http://localhost/test.wsdl');
        $client->getClusterName();

服务器:

namespace PrjSoapBundleController;

class SoapController extends Controller
{
    public function indexAction()
    {
    ini_set("soap.wsdl_cache_enabled","0");
    $server = new SoapServer($this->container->getParameter('wsdl'));
    $server->setClass('SoapBundleHelloService');
    $server->handle();

服务:

namespace PrjSoapBundle;

class HelloService
{
    public function getClusterName() 
    {
        return '<?xml version="1.0" encoding="utf-8"?><root>Hello!</root>';
    }
}

* .wsdl文件似乎是正确的,因为它将调用与控制器绑定,并与vanilla PHP服务一起正常工作.

在Internet上,此错误通常由缓存的wsdl解释,但这是通过将soap.wsdl_cache_enabled参数设置为零来在服务器代码中处理的.

即使设置soap.wsdl_cache_enabled = 0,也请尝试清空/ tmp文件夹.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读