2013-10-14 3 views
0

Keep получать не может подключиться к хосту это серверный код, который у меня естьHttps вебсервис PHP

<?php 
    ini_set('soap.wsdl_cache_enabled',0); 
    ini_set('soap.wsdl_cache_ttl',0); 

    $soap_server = new SoapServer('Notification.wsdl'); 
    $soap_server->addFunction('Notify'); 

    function Notify($message) 
    { 
     return array('message' => $message); 
    } 

    $soap_server->handle(); 


    ?> 

И это мой код клиента, который является то, что бросает ошибку. Конечная точка https. файл wsdl является локальным.

<?php 


    $context = stream_context_create(array(

     'https' => array(
     'cafile' => 'APX_WS_API1.cer', 
     'verify_peer' => true 
    ) 
    )); 

    $soap_client = new SoapClient('http://localhost:8888/Receiver/Notification.wsdl', 
     array('stream_context' => $context,'local_cer' => 'APX_WS_API1.cer')); 

    try{ 
    $result = $soap_client->__soapCall('Notify',array('message' => 'Hello World')); 
    echo $result; 
     }catch(SoapFault $e){ 
     echo "Error: " . $e->faultstring; 
     } 


     ?> 

Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно. Заранее спасибо

+0

'new SoapClient ('http: // loc..' =>' new SoapClient (' https: // loc..'. Предоставление контекста только параметров https ничего не значит, если это не его транспорт. – Wrikken

+0

Thanks для быстрого ответа теперь я получаю Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Разбор WSDL: Не удалось загрузить с 'https: // localhost: 8888/Receiver/Notification.wsdl': не удалось загрузить внешний объект «https: // localhost: 8888/Receiver/Notification.wsdl» в C: \ wamp \ www \ Receiver \ soap_client.php: 13 Трассировка стека: # 0 C: \ wamp \ www \ Receiver \ soap_client.php (13): SoapClient-> SoapClient ('https: // localho ...', Array) # 1 {main} брошен в C: \ wamp \ www \ Receiver \ soap_client.php в строке 13 –

ответ

1

Действительно ли ваш сертификат действителен? Попробуйте этот вариант:

$context = stream_context_create(array(
      'ssl' => array(
       'verify_peer' => false, 
       'allow_self_signed' => true 
      ) 
     )); 

Если это работает, что означает, что ваш сертификат недействителен.

+0

Может ли ваш локальный компьютер подключиться на удаленный сервер? Попробуйте выполнить pinging на удаленном сервере. – Vincent

+0

Есть ли у кого-нибудь советы о том, что я делаю неправильно. Я застрял на этой штуке f или несколько дней. –

+0

Вы пытались получить доступ к: http: // localhost: 8888/Receiver/Notification.wsdl через веб-браузер. Возвращает ли оно действительное определение wsdl? – Vincent

Смежные вопросы