如何创建 PHP SOAP 客户端以在 SSL 下调用 WCF Web 服务?
Posted
技术标签:
【中文标题】如何创建 PHP SOAP 客户端以在 SSL 下调用 WCF Web 服务?【英文标题】:How to create a PHP SOAP Client for calling a WCF Web service under SSL? 【发布时间】:2011-03-12 07:15:50 【问题描述】:我们在 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\test.php:5 中的“https://my-server.com/testservice.svc?wsdl”导入模式堆栈跟踪:#0 C:\ localhost\test.php(5): SoapClient->SoapClient('https://my-serv...') #1 main "
有什么想法吗?我做错了什么?
【问题讨论】:
【参考方案1】:http://weblogs.asp.net/gunnarpeipman/archive/2007/09/17/using-wcf-services-with-php.aspx
我目前也在调查这个问题,希望这对你有帮助
【讨论】:
【参考方案2】:一切看起来都是正确的,而且似乎可以工作,当然这就是 SOAP 能够从其他语言进行调用的重点。
也许可以尝试使用 NuSoap 或 PEAR Soap_Client,这样您就可以设置断点或只是从服务器转储原始输出?如果服务器返回错误,那可能会给您一些线索。如果服务器似乎在输出有效的 SOAP 响应,可能是您的 Web 服务有一些复杂的 args 对象类型或返回值导致 PHP 阻塞?
【讨论】:
【参考方案3】:根据this 问题,您必须授予对目录“C:/Windows/Temp”的 IIS_IUSERS 的访问权限。
【讨论】:
【参考方案4】:迟到了,但请确保当您使用 AddServiceEndpoint 设置 WCF 服务时,您使用的是 BasicHttpBinding 而不是 WebHttpBinding。
【讨论】:
以上是关于如何创建 PHP SOAP 客户端以在 SSL 下调用 WCF Web 服务?的主要内容,如果未能解决你的问题,请参考以下文章
如何配置 Spring Boot 应用程序以在 MySQL 上使用 SSL/TLS?
在 JBoss EAP 6.2 中无法通过 SSL 连接到 SOAP 服务