2012-06-12 22 views
1

我在我的网站上有一个SSL证书。它是由我的托管服务提供商安装的,我测试过它已正确安装。我试图从mindbodyonline.com/api上使用SOAP Web服务,并在响应中收到此消息ZEND SOAP方法必须通过SSL访问

此方法必须通过SSL(HTTPS)进行访问。

我正在使用Zend Framework的Soap客户端,它一直在为大多数服务工作,但这个特定的包含信用卡信息,这可能是为什么它需要安全连接。我一直无法找到任何有关如何安全发送我的SOAP请求的信息。我使用下面的代码创建客户端。

$client = new Zend_Soap_Client('https://api.mindbodyonline.com/0_5/ClientService.asmx?WSDL', array("soap_version"=>SOAP_1_1)); 

有人能帮忙吗?

+0

如果你使用'<?php phpinfo()?>'创建了一个phpinfo文件,它是否显示你已经在'Registered PHP Streams'下有'https'和/或在Registered下有'ssl/tls'流套接字运输'。我不知道它是否会回落到使用http,因为你没有内置到PHP中的openssl。 – drew010

+0

是的,我看到https,ssl和tls –

+0

好吧,看起来我没有在我的机器上安装SOAP扩展,现在要添加它,然后我可以检查是否得到相同的错误。 – drew010

回答

0

WSDL将所有端点指定为http不是https。所以我不得不在Zend_Soap_Client构造函数中更改端点。 Zend_Soap_Client Docs http://framework.zend.com/manual/en/zend.soap.client.html表示location选项在WSDL模式下不起作用,但它们是错误的。添加位置选项将覆盖WSDL中指定的端点。我得到它使用此代码

$client = new Zend_Soap_Client('https://api.mindbodyonline.com/0_5/ClientService.asmx?WSDL', array("soap_version"=>SOAP_1_1,'location'=>'https://api.mindbodyonline.com/0_5/ClientService.asmx')); 

感谢drew010他的帮助!