2010-09-16 3 views
4

J'ai un problème de travail avec PHP SoapClient avec un WS (WSDL) qui contient https. ma version de PHP est 5.2.5. avant de demander, oui, j'utilise les extensions Soap et openSSL de PHP.PHP SoapClient incapable de travailler avec https WS

l'URL que je suis en train d'atteindre est: https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL

le code j'utilise:

$url = "https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL"; 
$options["connection_timeout"] = 25; 
$options["location"] = $url; 

$client = new SoapClient($url,$options); 

échoue lors de la construction du SoapClient, et je reçois l'erreur suivante:

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 '

quelqu'un peut-il me dire quel est le problème?

grâce

Erez

Répondre

2

Je viens couru le code que vous avez donné et cela a fonctionné parfaitement:

<?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()); 

résultats dans

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

Alors peut-être que vous devriez vérifier s'il y a Problèmes de réseau: existe-t-il un pare-feu qui bloque la communication processus erver? (Je suppose que c'est IIS?) Vous pouvez également vérifier les paramètres safe_mode, bien que je doute que ce soit le problème ici.

11

Vous devez avoir OpenSSL activé en PHP pour pouvoir récupérer du contenu sur https.

Décommentez cette ligne dans php.ini

extension=php_openssl.dll 

Cherchez la section openssl dans votre phpinfo():

OpenSSL support => enabled 
OpenSSL Library Version => OpenSSL 0.9.8k 25 Mar 2009 
OpenSSL Header Version => OpenSSL 0.9.8k 25 Mar 2009 
Questions connexes