0

我需要与 .net 中的 web 服务构造进行通信(我认为),但是当我尝试调用方法时,返回此错误:

消息上指定的 SOAP 操作“”与 HTTP SOAP 操作“ http://tempuri.org/TripointWebservicesVersionedGeneral/Ping ”不匹配。

连接网络服务和执行方法的代码:

$client = new SoapClient(
                    '...?wsdl',
                        array(
                            'trace' => 1,
                            'soap_version' => SOAP_1_2
                        )
                    );

//$test = $client->__soapCall('Ping',array(''));
$test = $client->Ping();

这个错误的原因是什么?或者我需要做什么来调用一个方法?

我已经阅读了这个PHP 致命错误:“消息上指定的 SOAP 操作,'',与 HTTP SOAP 操作不匹配”,并输入了肥皂连接选项,"'action' => '.../Ping'"但对我没有帮助。

4

2 回答 2

1

我找到了无法调用该方法的原因,原因是:

问题之一:PHP 返回“Caught exception: Cannot process the message because the content type 'text/xml; charset=utf-8' is not the expected type 'application/soap+xml; charset=utf-8'. "

原因:WCF 运行的新版本的 Web 服务超出了 PHP 的预期。

解决方案:

将 WCF 服务的绑定类型从 binding="wsHttpBinding" 更改为 binding="basicHttpBinding"。

这可确保您的 .NET Web 服务支持符合 WS-I 标准的客户端和其他服务。

网址来源: http ://spacebug.com/php-calling-wcf-part-1-html

于 2013-01-25T16:20:32.020 回答
0

不是一个完整的答案,但我只是想强调您可能正面临这个问题,因为您正在SoapClient尝试使用使用 WS-Addressing 的 Web 服务。您应该尝试追踪其他人在这种情况下的行为:

http://www.cdatazone.org/index.php?/archives/15-WS-Addressing-for-extsoap.html

https://github.com/wso2/wsf

于 2013-01-24T19:03:40.190 回答