PHP SoapClient unable to work with https WS
i have a problem working with PHP SoapClient with a WS (WSDL) that contains https. my PHP version is 5.2.5. before you ask, yes, i am using PHP's Soap and openSSL extentions.
the URL i am trying to reach is: https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL
the code i am using:
$url = "https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL";
$options["connection_timeout"] = 25;
$options["location"] = $url;
$client = new SoapClient($url,$options);
it fails while constructing the SoapClient, and i get the following error:
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'
can anyone te开发者_如何学Pythonll me what is the problem?
thanks
Erez
You will need to have OpenSSL enabled in PHP to be able to retrieve content over https.
Uncomment this line in php.ini
extension=php_openssl.dll
Look for the openssl
section in your phpinfo():
OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 0.9.8k 25 Mar 2009
OpenSSL Header Version => OpenSSL 0.9.8k 25 Mar 2009
I just ran the code you gave and it worked perfectly:
<?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());
results in
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)
)
So maybe you should check if there are any network problems: Is there a firewall blocking the communication from within your server process? (I assume it's IIS?) You may also want to check safe_mode
settings, although I doubt this is the problem here.
精彩评论