У меня проблема с PHP SoapClient с WS (WSDL), который содержит https. моя версия PHP – 5.2.5. прежде чем вы спросите, да, я использую расширения для мыла PHP и openSSL.
URL, который я пытаюсь достичь: 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 ): не удалось открыть поток: попытка подключения не удалась, потому что связанная сторона не ответила должным образом после периода времени или установленное соединение не удалось, поскольку подключенный хост не смог ответить. в C: \ MY-DEV-FOLDER \ index.php в строке 42 Предупреждение: SoapClient :: SoapClient (): предупреждение ввода-вывода: не удалось загрузить внешнюю сущность " https://id3check.gb.co.uk/gbportalinternational/ aspx / id3check_1b.asmx? WSDL "в C: \ MY-DEV-FOLDER \ index.php в строке 42 Исключение выбрано – SOAP-ERROR: Разбор WSDL: Не удалось загрузить с ' https://id3check.gb.co. uk / gbportalinternational / aspx / id3check_1b.asmx? WSDL '
может ли кто-нибудь сказать мне, в чем проблема?
благодаря
Эрез
Вам нужно будет включить OpenSSL в PHP для получения содержимого по https.
Раскомментируйте эту строку в php.ini
extension=php_openssl.dll
Найдите раздел openssl
в phpinfo ():
OpenSSL support => enabled OpenSSL Library Version => OpenSSL 0.9.8k 25 Mar 2009 OpenSSL Header Version => OpenSSL 0.9.8k 25 Mar 2009
Я просто запустил код, который вы дали, и он отлично работал:
<?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
, хотя я сомневаюсь, что здесь проблема.