Php 如果主机不受信任,如何使用SoapClient调用安全Web服务

Php 如果主机不受信任,如何使用SoapClient调用安全Web服务,php,web-services,soap-client,Php,Web Services,Soap Client,我想使用PHP的SoapClient连接到托管在安全HTTP中的Web服务。承载此Web服务的服务器没有SSL证书。当我尝试使用SoapClient连接时,出现以下错误- “警告:SoapClient::_构造()[函数。--构造]:SSL:致命协议错误” SOAP错误字符串->SOAP错误:解析WSDL:PHP-SOAP不支持传输'http://schemas.microsoft.com/soap/tcp" SOAP错误代码:WSDL 我的代码 试试看{ $client=新的SoapClien

我想使用PHP的SoapClient连接到托管在安全HTTP中的Web服务。承载此Web服务的服务器没有SSL证书。当我尝试使用SoapClient连接时,出现以下错误-

“警告:SoapClient::_构造()[函数。--构造]:SSL:致命协议错误”

SOAP错误字符串->SOAP错误:解析WSDL:PHP-SOAP不支持传输'http://schemas.microsoft.com/soap/tcp"

SOAP错误代码:WSDL

我的代码
试试看{
$client=新的SoapClient('https://mywebservicelink?wsdl,数组(
“允许自签名”=>1,
“验证对等方”=>0,
“跟踪”=>1,
“例外情况”=>1,
));
回显“SOAP对象
”; 回声'; 打印(客户); 回音“******************
”; }捕获(例外$e){ 回声'; 模具(印刷品($e)); }
希望这些信息足够了。 谁能告诉我为什么我会犯这样的错误?是因为证书问题吗? 证书(crt文件)


感谢您的帮助,提供服务的服务器尚未安装SSL证书。然后您会问为什么不能使用安全链接连接到它https://...

我认为您自己回答了这个问题:-)服务器必须安装SSL证书才能接受安全连接。否则,您只能使用不安全的连接http://...

PHP SoapClient还可以通过安全连接加载WSDL。事实上,我正在本地devel机器上使用它,并带有自签名证书,它可以正常工作

直到最近在PHP5.5+中才添加了新的参数ssl_method(可能的值:SOAP_ssl_method_TLS、SOAP_ssl_method_SSLv2、SOAP_ssl_method_SSLv3或SOAP_ssl_method_SSLv23)来指定某种对等验证,但我没有这方面的经验

但是,如果您的服务器已经安装了SSL证书,并且您的PHP SoapClient仍然无法连接到它,那么您可以调整流上下文以禁用对等验证并接受自签名证书。请参见主题中的

try {
            $client = new SoapClient('https://mywebservicelink?wsdl', array(
                'allow_self_signed' => 1,
                'verify_peer'       => 0,
                'trace'             => 1,
                'exceptions'        => 1,
            ));


            echo 'SOAP OBJECT<br />';
            echo '<pre>';
            print_r($client);
            echo '*****************<br />';
        } catch (Exception $e) {
            echo '<pre>';
            die(print_r($e));
       }