0

我已经使用http://code.google.com/p/php-wsdl-creator/downloads/list在 PHP 中编写了一个 SOAP 服务器 我的客户端在用 C# 编写的 Dynamics CRM Online 插件中 一切都在我的测试网站上运行良好,但是当我将 SOAP 服务器发送到客户端 Web 主机时,他们已上传文件,但我收到以下错误返回:

SoapServer::SoapServer(): 'soap_version' option must be SOAP_1_1 or SOAP_1_2

我相信这是他们服务器上的配置问题(他们必须为此安装一个 SOAP 模块),但我不知道在哪里寻找/建议解决这个问题。

作为参考,我的 C# 类在 Web 参考中引用了 SOAP 服务器。我添加了以下行,尝试了 11 和 12 但无济于事:

soap.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap11;

当我查看 phpinfo 页面时,我的测试服务器'--enable-soap' '--with-xsl=/usr在“配置命令”部分中有该行,而 web 主机版本没有,但它确实在已/etc/php.d/soap.ini解析的附加 .ini 文件中具有该行 - 这会导致任何问题吗?我对配置php服务器一无所知。

4

2 回答 2

5

我在 php-wsdl-createor-framework 中遇到了同样的问题。他们在https://code.google.com/p/php-wsdl-creator/上的补丁是更改 class.phpwsdl.php 中的第 434 行

    // SOAP server options
    $this->SoapServerOptions=Array(
        'soap_version'  =>  SOAP_1_1|SOAP_1_2,
        'encoding'      =>  'UTF-8',
        'compression'   =>  SOAP_COMPRESSION_ACCEPT|SOAP_COMPRESSION_GZIP|9
    );

    // SOAP server options
    $this->SoapServerOptions=Array(
        'soap_version'  =>  (defined('SOAP_1_2'))?SOAP_1_2:SOAP_1_1,
        'encoding'      =>  'UTF-8',
        'compression'   =>  SOAP_COMPRESSION_ACCEPT|SOAP_COMPRESSION_GZIP|9
    )

希望它可以帮助任何人

于 2014-11-10T13:38:29.690 回答
0

尝试在 SoapServer 构造函数 (PHP) 中设置 soap_version 选项。例如:

$server = new SoapServer("some.wsdl", array('soap_version' => SOAP_1_2));
于 2013-04-29T11:20:15.557 回答