2015-07-19 81 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