我使用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
Run Code Online (Sandbox Code Playgroud)
我相信这是他们服务器上的配置问题(他们必须为此安装一个SOAP模块),但我不知道在哪里寻找/建议对此进行排序.
作为参考,我的C#类引用Web引用中的SOAP服务器.我添加了以下行,尝试11和12,但无济于事:
soap.SoapVersion = System.Web.Services.Protocols.SoapProtocolVersion.Soap11;
Run Code Online (Sandbox Code Playgroud)
当我查看phpinfo页面时,我的测试服务器'--enable-soap' '--with-xsl=/usr在Configure Command部分中有一行,其中web主机版本没有,但它确实/etc/php.d/soap.ini解析了附加.ini文件中的行- 这会导致任何问题吗?我对配置php服务器一无所知.
小智 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
);
Run Code Online (Sandbox Code Playgroud)
至
// 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
)
Run Code Online (Sandbox Code Playgroud)
希望它能帮助任何人