PHP SoapClient无法使用https WS

时间:2010-09-16 11:36:11

标签: php wsdl soap-client

我在使用包含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”加载

谁能告诉我这是什么问题?

感谢

埃雷兹

2 个答案:

答案 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设置,虽然我怀疑这是问题所在。