2015-12-30 3 views
0

Кто-нибудь знает, как использовать saber SOAP-сервисы с IOS? кто-нибудь это сделал? Я использую AFNetworking для сетевого вызова.Использовать API-интерфейс Sabre SOAP с iOS

Я использую AFHTTPRequestOperation, чтобы позвонить в веб-службу, но для этого веб-сервиса требуется аутентификация.

Параметры аутентификации: username, password и IPCC. Я могу установить имя пользователя и пароль на

NSURLCredential *credential = [NSURLCredential credentialWithUser:@"aaaaa" password:@"aaaaaa" persistence:NSURLCredentialPersistenceNone]; 
[operation setCredential:credential]; 

но как установить этот параметр IPCC?

+0

Его вызов webservice; его платформа независима. Опубликовать то, что вы пытались/или что не работает ... –

+0

Я использую AFHTTPRequestOperation, чтобы позвонить в веб-службу, но для этого веб-службы требуется аутентификация. Параметры аутентификации: «имя пользователя», «пароль» и «IPCC». Я могу установить имя пользователя и пароль по NSURLCredential * credential = [NSURLCredential credentialWithUser: @ "aaaaa" password: @ "aaaaaa" persistence: NSURLCredentialPersistenceNone]; \t [операция setCredential: credential]; но как установить этот параметр IPCC? –

ответ

0

Что-то вроде (быстрая и грязная):

NSString *soapMessage = [NSString stringWithFormat: 
        @"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" 
         "<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:eb=\"http://www.ebxml.org/namespaces/messageHeader\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\">" 
        " <SOAP-ENV:Header>" 
        "  <eb:MessageHeader SOAP-ENV:mustUnderstand=\"1\" eb:version=\"1.0\">" 
        "   <eb:ConversationId/>" 
        "   <eb:From>" 
        "    <eb:PartyId type=\"urn:x12.org:IO5:01\">999999</eb:PartyId>" 
        "   </eb:From>" 
        "   <eb:To>" 
        "    <eb:PartyId type=\"urn:x12.org:IO5:01\">123123</eb:PartyId>" 
        "   </eb:To>" 
        "   <eb:CPAId>IPCC</eb:CPAId>" 
        "   <eb:Service eb:type=\"OTA\">SessionCreateRQ</eb:Service>" 
        "   <eb:Action>SessionCreateRQ</eb:Action>" 
        "   <eb:MessageData>" 
        "    <eb:MessageId>1000</eb:MessageId>" 
        "    <eb:Timestamp>2001-02-15T11:15:12Z</eb:Timestamp>" 
        "    <eb:TimeToLive>2001-02-15T11:15:12Z</eb:TimeToLive>" 
        "   </eb:MessageData>" 
        "  </eb:MessageHeader>" 
        "  <wsse:Security xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2002/12/secext\" xmlns:wsu=\"http://schemas.xmlsoap.org/ws/2002/12/utility\">" 
        "   <wsse:UsernameToken>" 
        "    <wsse:Username>%@</wsse:Username>" 
        "    <wsse:Password>%@</wsse:Password>" 
        "    <Organization>%@</Organization>" 
        "    <Domain>DEFAULT</Domain>" 
        "   </wsse:UsernameToken>" 
        "  </wsse:Security>" 
        " </SOAP-ENV:Header>" 
        " <SOAP-ENV:Body>" 
        "  <eb:Manifest SOAP-ENV:mustUnderstand=\"1\" eb:version=\"1.0\">" 
        "   <eb:Reference xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"cid:rootelement\" xlink:type=\"simple\"/>" 
        "  </eb:Manifest>" 
        " </SOAP-ENV:Body>" 
        "</SOAP-ENV:Envelope>"  
        ,username 
        ,password 
        ,ipccValue 

        ]; 

Я предполагаю, что вы имеете в виду ipccValue в блоке организации, а не ЭБ: CPAId блок

от https://developer.sabre.com/docs/read/soap_basics/Authentication и кредитов send parameter in soap web service from ios

+0

Я уже пробовал этот вызов, но он возвращает мне странный xml, который не соответствует действительности. его очень похоже на содержимое файла WSDL. –

+0

CPAId должен соответствовать Организации. Имеет ли это? –

+0

да, его необходимо ...... Спасибо за ваш ответ, но теперь я не использую этот SOAP, который мы переместили в API для отдыха. –

0

Когда я попробовал приведенный выше фрагмент, он возвращает мне это

<?xml version="1.0" encoding="UTF-8"?> 
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://www.opentravel.org/OTA/2002/11" xmlns:tns="https://webservices.sabre.com/websvc" xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" targetNamespace="https://webservices.sabre.com/websvc"> 
    <types> 
     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
      <xsd:import namespace="http://www.opentravel.org/OTA/2002/11" schemaLocation="SessionCreateRQRS.xsd"/> 
      <xsd:import namespace="http://www.ebxml.org/namespaces/messageHeader" schemaLocation="msg-header-2_0.xsd"/> 
      <xsd:import namespace="http://schemas.xmlsoap.org/ws/2002/12/secext" schemaLocation="wsse.xsd"/> 
     </xsd:schema> 
    </types> 
    <message name="GetSessionCreateInput"> 
     <part name="header" element="eb:MessageHeader"/> 
     <part name="header2" element="wsse:Security"/> 
     <part name="body" element="xsd1:SessionCreateRQ"/> 
    </message> 
    <message name="GetSessionCreateOutput"> 
     <part name="header" element="eb:MessageHeader"/> 
     <part name="header2" element="wsse:Security"/> 
     <part name="body" element="xsd1:SessionCreateRS"/> 
    </message> 
    <portType name="SessionCreatePortType"> 
     <operation name="SessionCreateRQ"> 
      <input message="tns:GetSessionCreateInput"/> 
      <output message="tns:GetSessionCreateOutput"/> 
     </operation> 
    </portType> 
    <binding name="SessionCreateSoapBinding" type="tns:SessionCreatePortType"> 
     <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 
     <operation name="SessionCreateRQ"> 
      <soap:operation soapAction="OTA"/> 
      <input> 
       <soap:header message="tns:GetSessionCreateInput" part="header" use="literal"/> 
       <soap:header message="tns:GetSessionCreateInput" part="header2" use="literal"/> 
       <soap:body parts="body" use="literal"/> 
      </input> 
      <output> 
       <soap:header message="tns:GetSessionCreateOutput" part="header" use="literal"/> 
       <soap:header message="tns:GetSessionCreateOutput" part="header2" use="literal"/> 
       <soap:body parts="body" use="literal"/> 
      </output> 
     </operation> 
    </binding> 
    <service name="SessionCreateRQService"> 
     <port name="SessionCreatePortType" binding="tns:SessionCreateSoapBinding"> 
      <soap:address location="https://webservices.sabre.com"/> 
     </port> 
    </service> 
</definitions> 
+0

это ответ, который я получаю –

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