我们在 IIS 中安装的 SSL Web 服务器下有一个 WCF 服务。该 Web 服务是使用 .NET 3.5 和 WCF 3.0 创建的。 我们可以使用.NET 3.5客户端访问它,没有任何问题。
我们将发布服务的 URL 命名为:
https://my-server.com/testservice.svc?wsdl
我们需要进行概念验证,以检查是否可以使用 PHP 客户端访问它。我尝试使用 NuSOAP 或 PHP 的标准 SoapClient,但在这两种情况下我都会遇到异常。这是我的代码:
<?php
$wsdl = 'https://my-server.com/testservice.svc?wsdl';
$client = new SoapClient($wsdl);
?>
它向我返回一个异常并显示以下消息:
错误:sendSms:SoapFault 异常:[WSDL] SOAP-错误:解析架构:无法从 C:\localhost est 中的“https://my-server.com/testservice.svc?wsdl”导入架构。 php:5 堆栈跟踪: #0 C:\localhost est.php(5): SoapClient->SoapClient('https://my-serv...') #1 {main} "
有什么想法吗?我做错了什么?
一切看起来都是正确的,并且似乎可以工作,这当然是 SOAP 能够从其他语言进行调用的要点。
也许尝试使用 NuSoap 或 PEAR Soap_Client,这样您就可以设置断点或仅转储服务器的原始输出?如果服务器返回错误,这可能会给您一些线索。如果服务器似乎正在输出有效的 SOAP 响应,则可能是您的 Web 服务具有一些复杂的参数对象类型或返回值,导致 PHP 阻塞?
根据this问题,您必须授予目录“C:/Windows/Temp”的 IIS_IUSERS 访问权限。
虽然晚了,但请确保当您使用 AddServiceEndpoint 设置 WCF 服务时,您使用的是 BasicHttpBinding 而不是 WebHttpBinding。