За последние 24 часа нас посетили 59226 программистов и 1831 робот. Сейчас ищут 878 программистов ...

SoapClient ошибка получения wsdl с сервиса по https

Тема в разделе "Прочие вопросы по PHP", создана пользователем vartem, 15 ноя 2015.

  1. vartem

    vartem Новичок

    С нами с:
    15 ноя 2015
    Сообщения:
    2
    Симпатии:
    0
    Приветствую,

    Прошу помощи у сообщества, т.к. уже перепробовал все что мог.

    Есть веб-сервис (не наш и изменить мы тут ничего не можем), который доступен по адресу https://x.x.x.x:4433/Service/Service.asmx?wsdl. Проблема в том что SSL сертификат у этого URL:
    1. Самоподписанный
    2. Вместо правильного host-name указана какая-то чушь.

    Сам url вполне нормально открывается в интернет-браузере (если указать браузеру что мы согласны с риском и доверяем этому источнику), а так же получается через curl, если указать curl-у:
    Код (Text):
    1.  
    2.         curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);
    3.         curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
    Однако SoapClient настойчиво продолжает мне показывать ошибку:

    Warning: SoapClient::SoapClient(https://x.x.x.x:4433/Service/Service.asmx?wsdl): failed to open stream: HTTP Warning: SoapClient::SoapClient() request failed!
    Warning: I/O warning : failed to load external entity
    [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://x.x.x.x:4433/Service/Service.asmx?wsdl' : failed to load external entity https://x.x.x.x:4433/Service/Service.asmx?wsdl"

    Теперь сам вызов SoapClient:
    Код (PHP):
    1. $client = new SoapClient('https://x.x.x.x:4433/Service/Service.asmx?wsdl',
    2.             array(
    3.            //     "soap_version"=> SOAP_1_2,
    4.           //      'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
    5.                 'trace' => 1,
    6.                 'exceptions' => true,
    7.  
    8.                 'cache_wsdl' => WSDL_CACHE_NONE,
    9.                 'verifypeer' => false,
    10.                 'verifyhost' => false,
    11.                 'stream_context' => stream_context_create(
    12.                                                             array(
    13.                                                                 'ssl' => array(
    14.                                                                             'verify_peer' => false,
    15.                                                                             'verify_peer_name' => false,
    16.                                                                             'allow_self_signed' => true
    17.                                                                             ),
    18.                                                                 'https' => array(
    19.                                                                            'curl_verify_ssl_peer'  => false,
    20.                                                                            'curl_verify_ssl_host'  => false
    21.                                                                           )
    22.                                                                     )
    23.                                                         )
    24.             )
    25.         );
    26.  
    та-же ситуация при запросе этого же url через file_get_contents('https://x.x.x.x:4433/Service/Service.asmx?wsdl', false, $stream_context );
    Код (PHP):
    1. $stream_context = stream_context_create([
    2.                                                                 'ssl' => array(
    3.                                                                             //'capture_session_meta' => true,
    4.                                                                             'verify_peer' => 0,
    5.                                                                             'verify_peer_name' => 0,
    6.                                                                     //        'allow_self_signed' => true,
    7.                                                                             )
    8.                                                                     ]
    9.                                                         );
    10. file_get_contents('https://x.x.x.x:4433/Service/Service.asmx?wsdl', false, $stream_context );
    11.  
    Подскажите пожалуйста у кого какие идеи, т.к. все свои я уже исчерпал...

    Аж да, забыл сказать, версия PHP 5.5.30

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а стримы для file_get_contents разрешены?
     
  3. vartem

    vartem Новичок

    С нами с:
    15 ноя 2015
    Сообщения:
    2
    Симпатии:
    0
    allow_url_fopen = on
    Если это имелось ввиду