如何创建 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?

SOAP java客户端HTTPS / SSL

如何查看 PHP SOAP 客户端类生成的实际 XML?

在 JBoss EAP 6.2 中无法通过 SSL 连接到 SOAP 服务

python 有没有php里面的soapclient这样的东西

如何将 SOAP 调用交换为 cURL,以在 allow_url_fopen 限制内工作?