2015-10-07 2 views
0

Сценарий: запрос SOAP через SSL с моего локального хоста на внешний сервер.Soapclient https request

версия

PHP: 5.6.3

Первая попытка:

$options = array (
    'encoding'    => 'UTF-8', 
    'stream_context'  => stream_context_create(array(
     'ssl' => array(
       'verify_peer'  => false, 
       'verify_peer_name' => false, 
       'allow_self_signed' => true, 
      ) 
     ) 
    ), 
); 
$client = new SoapClient('https://www.???.es/index.php/api/soap?wsdl', $options); 

Ошибка: SOAP-ERROR: Разбор WSDL

Предложенное решение найдено here по tobik (сделать запрос с WDSL файла ранее загружено)

Второй случай:

$filename = 'test.wsdl'; 
$uri = dirname(__FILE__) . DIRECTORY_SEPARATOR .$filename; 
$options = array (
    'encoding'    => 'UTF-8', 
    'location'    => 'https://www.???.es', 
    'uri'     => $uri, 
    'stream_context'  => stream_context_create(array(
     'ssl' => array(
       'verify_peer'  => false, 
       'verify_peer_name' => false, 
       'allow_self_signed' => true, 
       'cache_wsdl' => WSDL_CACHE_NONE, 
      ) 
     ) 
    ), 
); 
$client = new SoapClient(null, $options); 

Ошибка: Uncaught SoapFault исключение: [Клиент] Похоже, что мы не получили XML документ в ...

ответ

0

Наконец решена добавлением

openssl.cafile=/etc/ssl/certs/ca-bundle.crt 

к php.ini