Я создал несколько скриптов, работающих с внешним WSDL. Я столкнулся с тем, что мне нужно интегрировать в нашу систему, и я не могу работать. Я пробовал неделю без каких-либо результатов.
script не удалось создать конструктор уже:
$client = new SoapClient("https://webtjener09.kred.no/TestWebservice/OppdragServiceSoapHttpPort?WSDL");
Дает ошибку:
PHP Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://webtjener09.kred.no/TestWebservice/OppdragServiceSoapHttpPort?WSDL' : failed to load external entity "https://webtjener09.kred.no/TestWebservice/OppdragServiceSoapHttpPort?WSDL"
У меня есть openssl, установленный и работающий с PHP, и помните, что у меня уже есть другие рабочие SOAP-вызовы для другого WSDL через SSL. Я узнал, что я не могу решить это с помощью сертификата, поскольку он не работает уже в конструкторе.
Но: Я попытался подключиться к удаленному серверу с командной строкой openssl, и эта команда также потерпела неудачу:
openssl s_client -connect webtjener09.kred.no:443 -state
Но потом я попытался принудительно подключить его к SSL3, и он отлично работал, как это:
openssl s_client -ssl3 -connect webtjener09.kred.no:443 -state
Итак, я подумал, что мне нужно сопоставить SSL-версию удаленного сервера. Чтобы удвоить, я также попытался сделать соединение cURL через PHP, и он провалился, пока я не добавил форсирование версии SSL следующим образом:
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
Добавление CURLOPT_SSLVERSION к соединению cURL сделало это нормально. И тогда корень моего вопроса:
Как заставить PHP-мыльный конструктор/вызов использовать SSL3. Мне кажется, что это должно быть решением. Но я не смог узнать, как настроить функцию PHP SOAP только на использование SSL3. Поскольку как командная строка -openssl-, так и PHP cURL работают с принудительным SSL3, я предполагаю, что то же самое произойдет с моей SOAP-функцией?
Входы, пожалуйста?
(Использование Ubuntu Linux, PHP 5.3.3)