2013-10-14 108 views
0

保持越來越無法連接到主機,這是服務器端的代碼,我有的Https web服務的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

'新的SoapClient('http:// loc..' =>'新的SoapClient('https:// loc..'。給與上下文只是https選項並不意味着任何東西,當它不是它的傳輸時 – Wrikken

+0

謝謝對於快速響應,我現在收到致命錯誤:未捕獲SoapFault異常:[WSDL] SOAP-ERROR:解析WSDL:無法從「https:// localhost:8888/Receiver/Notification.wsdl」加載:未能在C:\ wamp \ www \ Receiver \ soap_client.php中加載外部實體「https:// localhost:8888/Receiver/Notification.wsdl」:13 Stack trace:#0 C:\ wamp \ www \ Receiver \ soap_client.php (13):第13行中的C:\ wamp \ www \ Receiver \ soap_client.php中拋出的SoapClient-> SoapClient('https:// localho ...',Array)#1 {main} –

回答

1

您的證書有效嗎? 嘗試使用此選項:

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

如果一切正常,這意味着你的證書是無效的。

+0

您的本地機器可以連接到遠程服務器?嘗試ping遠程服務器 – Vincent

+0

有沒有人有任何意見我做錯了什麼我一直在這個東西卡住或現在幾天。 –

+0

您是否嘗試通過網頁瀏覽器訪問:http:// localhost:8888/Receiver/Notification.wsdl。它是否會返回有效的wsdl定義? – Vincent