我在使用包含https的WS(WSDL)的PHP SoapClient时遇到问题。 我的PHP版本是5.2.5。 在你问之前,是的,我正在使用PHP的Soap和openSSL扩展。
我想要覆盖的网址是: https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL
我正在使用的代码:
$url = "https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL";
$options["connection_timeout"] = 25;
$options["location"] = $url;
$client = new SoapClient($url,$options);
在构建SoapClient时失败,我收到以下错误:
警告:SoapClient :: SoapClient(https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL):无法打开流:连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机未能响应。在第42行的C:\ MY-DEV-FOLDER \ index.php中警告:SoapClient :: SoapClient():I / O警告:无法在C:\ MY-DEV-中加载外部实体“https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL”第42行的FOLDER \ index.php抛出异常 - SOAP-ERROR:解析WSDL:无法从“https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL”加载
谁能告诉我这是什么问题?
感谢
埃雷兹
答案 0 :(得分:11)
您需要在PHP中启用OpenSSL才能通过https检索内容。
在php.ini中取消注释这一行
extension=php_openssl.dll
在phpinfo()中查找openssl
部分:
OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 0.9.8k 25 Mar 2009
OpenSSL Header Version => OpenSSL 0.9.8k 25 Mar 2009
答案 1 :(得分:2)
我刚刚运行了您提供的代码并且运行良好:
<?php
$url = "https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL";
$options["connection_timeout"] = 25;
$options["location"] = $url;
$options['trace'] = 1;
$client = new SoapClient($url,$options);
print_r($client->__getFunctions());
结果
Array
(
[0] => ID3CheckInitialise_1bResponse ID3CheckInitialise_1b(ID3CheckInitialise_1b $parameters)
[1] => ID3AddressLookupInitialise_1bResponse ID3AddressLookupInitialise_1b(ID3AddressLookupInitialise_1b $parameters)
[2] => ID3Check_1bResponse ID3Check_1b(ID3Check_1b $parameters)
[3] => AddressLookup_1bResponse AddressLookup_1b(AddressLookup_1b $parameters)
)
所以也许您应该检查是否存在任何网络问题:是否存在阻止服务器进程内通信的防火墙? (我假设它是IIS?)您可能还想检查safe_mode
设置,虽然我怀疑这是问题所在。