2010-09-16 119 views
4

我在使用包含https的WS(WSDL)的PHP SoapClient时遇到问题。 我的PHP版本是5.2.5。 在问你之前,是的,我正在使用PHP的Soap和openSSL扩展。PHP SoapClient无法使用https WS

我试图访问的网址是: 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的失败,我得到以下错误:

Warning: SoapClient::SoapClient(https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL): failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in C:\MY-DEV-FOLDER\index.php on line 42 Warning: SoapClient::SoapClient(): I/O warning : failed to load external entity " https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL " in C:\MY-DEV-FOLDER\index.php on line 42 Exception thrown - SOAP-ERROR: Parsing WSDL: Couldn't load from ' https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL '

谁能告诉我是什么问题?

感谢

埃雷兹

回答

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) 
) 

因此,也许你应该检查是否有任何网络问题:是否有防火墙阻止您的通信erver进程? (我认为它是IIS?)您可能还想检查safe_mode设置,虽然我怀疑这是这里的问题。

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