2015-07-19 83 views
1

我想在PHP soap中使用SITA Web服務(SWS)。 (centos 6 + php 5.6.9) SWS獨立於平臺,基於OpenTravel™Alliance(OTA)XML標準。通過https的SoapFault:無法連接到主機

首先,我必須生成SSL DER文件,發送給他們,因爲: 「所有的連接和通信與SITA的Web服務應使用HTTPS的SSL端口443的客戶端應用程序將使用SOAP通過HTTPS訪問Web服務建立。 WS-Security描述了對SOAP消息傳遞的增強,通過消息完整性,消息機密性和單個消息身份驗證來提供保護質量,這些機制可用於適應多種安全模型和加密技術。 訪問SITA Web訪問SITA Web Services,客戶需要創建密鑰對PKI證書,向我們提供公共DER密鑰並使用私有PEM密鑰對消息進行簽名。證書可以來自Certifi cate Authority(CA)或自簽名證書,但需要遵守X.509第3版標準。「

我產生DER文件,這個命令,如像他們說:

  1. 的OpenSSL genrsa -out key.pem
  2. OpenSSL的REQ -new -x509 -key key.pem退房手續cert.der中 - 天365 -outform DER
  3. OpenSSL的REQ -new -key key.pem退房手續cert.csr -outform DER

現在,當我想在SITA網絡服務簽約,我得到這個錯誤: [xdebug_message] =>(! )SoapFault:無法連接到主機。

ini_set('soap.wsdl_cache_enabled',0); 
ini_set('soap.wsdl_cache_ttl',0); 
$pem = 'wsdl/cert.pem'; 
$defaultEndpoint = "https://sws.qa.sita.aero/sws/SignIn"; 
$uri = "https://sws.qa.sita.aerosws/sws"; 
$wsdl = 'wsdl/SITAReservationService.wsdl'; 
$xml = '<?xml version="1.0" encoding="utf-8" ?> 
     <SITA_SignIn Version="0" Version="1" xmlns=http://www.opentravel.org/OTA/2003/05 xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation="wsdl/SITA_PingRQ.xsd" TransactionIdentifier=""> 
     <POS> 
      <Source AirlineVendorID="xx" ERSP_UserID="xx/xx" AgentSine="xx/xx" PseudoCityCode="xxxx" AgentDutyCode="xx" ISOCountry="xx" AirportCode="IKA" /> 
     </POS> 
    </SITA_SignIn>'; 
try{ 
    $client = new SoapClient($wsdl, array(
      'location' => $defaultEndpoint, 
      'uri' => $uri, 
      'trace'    => 1, 
      'exceptions'  => true, 
      'connection_timeout'=> 30, 
      'ssl' => array(
        'verify_peer' => false, 
        'allow_self_signed' => true, 
        'cafile'  => $pem, 
        'CN_match'  => 'https://sws.qa.sita.aero', 
        'ciphers'    => 'ALL' 
      ) 
    )); 
    var_dump($client->SignIn($xml)); 
} 
catch (SoapFault $fault) { 
    var_dump($fault); 
} 

我從來沒有在使用soap,我沒有關於soap和OTA XML標準web服務的許多信息。

請給我一個關於此問題和SITA Web服務的解決方案,以及如何連接到SITA Web服務。

+0

您好,我是SITA web服務中的新成員,您能幫我解決一下如何在PHP中起訴SITA Web服務? – Abbas

回答

0

有兩個錯誤在你的代碼:

  1. 你的URI是不正確的,應該是 「https://sws.sita.aero/sws」。
  2. 您的請求是錯誤的,應該是SITA_SignInRQ

但我認爲你仍然會得到一個「沒有簽名的消息!」來自SITA的錯誤。

+0

你能幫我一下如何開始使用SITA和PHP? – Abbas