Сабер, Получить сессиюRQ - PullRequest
       9

Сабер, Получить сессиюRQ

0 голосов
/ 24 января 2019

Я пытаюсь создать сессию, используя мыльный сервис SessionCreateRQ. где я создал объект, используя HttpWebRequest https://sws3 -crt.cert.sabre.com , и я добавил WSDL для ссылки на службу в моей программе

    String username = "username";
    String Pass = "Pass";
    String Ippc = "iPseudo";
    String ppc = "pseudo";
    String domain = "DEFAULT";

    DateTime dt = DateTime.UtcNow;
    string tstamp = dt.ToString("s") + "Z";



    sessionRQ.MessageHeader msgheader = new sessionRQ.MessageHeader();

    msgheader.ConversationId = "GetsessionRQ";

    //Message Header message header from //
    sessionRQ.From from = new sessionRQ.From();
    sessionRQ.PartyId frompartid = new sessionRQ.PartyId();
    sessionRQ.PartyId[] frompartidarr = new sessionRQ.PartyId[1];
    frompartid.Value = "";
    frompartidarr[0] = frompartid;
    from.PartyId = frompartidarr;
    msgheader.From = from;

    //message Header, To //
    sessionRQ.To to = new sessionRQ.To();
    sessionRQ.PartyId topartid = new sessionRQ.PartyId();
    sessionRQ.PartyId[] topartidarr = new sessionRQ.PartyId[1];
    topartid.Value = "";
    topartidarr[0] = topartid;
    to.PartyId = topartidarr;
    msgheader.To = to;


    msgheader.CPAId = Ippc;
    msgheader.Action = "SessionCreateRQ";
    sessionRQ.Service services = new sessionRQ.Service();
    services.Value = "SessionCreate";
    msgheader.Service = services;


    sessionRQ.MessageData msgData = new sessionRQ.MessageData();
    msgData.MessageId = "adong";
    msgData.Timestamp = tstamp;
    msgheader.MessageData = msgData;


    sessionRQ.Security security = new sessionRQ.Security();
    sessionRQ.SecurityUsernameToken securityusertoken = new 
    sessionRQ.SecurityUsernameToken();
    securityusertoken.Username = username;
    securityusertoken.Password = Pass;
    securityusertoken.Organization = Ippc;
    securityusertoken.Domain = ppc;
    security.UsernameToken = securityusertoken;

    sessionRQ.SessionCreateRQ req = new sessionRQ.SessionCreateRQ();
    sessionRQ.SessionCreateRQPOS pos = new sessionRQ.SessionCreateRQPOS();
    sessionRQ.SessionCreateRQPOSSource source = new 
    sessionRQ.SessionCreateRQPOSSource();
    source.PseudoCityCode = Ippc;
    pos.Source = source;
    req.POS = pos;

    sessionRQ.SessionCreateRQService servicesobj = new 
    sessionRQ.SessionCreateRQService();
    servicesobj.MessageHeaderValue = msgheader;
    servicesobj.SecurityValue = security;



    sessionRQ.SessionCreateRS resp = new sessionRQ.SessionCreateRS();
    try
    {
        resp = servicesobj.SessionCreateRQ(req);
    }
    catch (Exception ex)
    {
        System.Diagnostics.Debug.WriteLine(ex.ToString());
    }

    string a, b;

    a = msgheader.ConversationId;
    b = security.BinarySecurityToken;

Я получил сообщение об ошибке: «Запрос был прерван: не удалось создать безопасный канал SSL / TLS». что-то не так с моим кодом? и я следовал этому коду Использование сервисов мыла Sabre с использованием .net

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Если вы не хотите вручную изменять настройки TLS, убедитесь, что вы используете правильный .NET Framework. Я считаю, что .NET Framework 4.7.x по умолчанию использует правильную версию TLS.

0 голосов
/ 04 февраля 2019

Видимо, ваш код не является проблемой (, но на всякий случай замените часть services.Value = "SessionCreate" на services.Value = "SessionCreateRQ"; ), Sabre были изменены конфигурации подключения в некоторых средах, Sabre имеет много конечные точки, каждая из которых указывает на другую конфигурацию среды.

Вы должны настроить протокол SecurityProtocol и не забудьте проверить в своем прокси-классе Sabre, какая конечная точка настроена

> Попробуйте добавить эти строки в начало вашего класса / метода, отвечающего за создать сеанс.

У вас должно быть что-то вроде этого:

private string DummyCreateMySabreSession()
{

    System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Tls11 |         System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Ssl3;
    System.Net.ServicePointManager.Expect100Continue = true;
    System.Net.ServicePointManager.DefaultConnectionLimit = 9999;

    Security security = new Security
    {
        UsernameToken = new SecurityUsernameToken
        {
            Username = "", //Your username
            Password = "", //Your password
            Organization = "", //Your organization
            Domain = "" //Your domain
        }
    };
    MessageHeader messageHeader = new MessageHeader
    {
        From = new From
        {
            PartyId = new PartyId[1]{
                new PartyId{
                    type = "urn:x12.org:IO5:01",
                    Value = "app.stackoverflow.com"
                }
            }
        },
        To = new To
        {
            PartyId = new PartyId[1]{
                new PartyId{
                    type = "urn:x12.org:IO5:01",
                    Value = "sws-crt.cert.sabre.com"
                }
            }
        }   
        ConversationId = "stk@stackoverflow.com",
        Service = new Service
        {
            type = "OTA",
            Value = "SessionCreateRQ"
        },
        Action = "SessionCreateRQ",
        MessageData = new MessageData
        {
            MessageId = "", // Unique Hash key per transaction
            Timestamp = DateTime.UtcNow.ToString("s") + "z"
        }
    };
    SessionCreateRQ sessionCreateRQ = new SessionCreateRQ
    {
        POS = new SessionCreateRQPOS
        {
            Source = new SessionCreateRQPOSSource
            {
                PseudoCityCode = "" //Your organization
            }
        },
        returnContextID = true,
        returnContextIDSpecified = false
    };

    SessionCreateRQService sessionCreateRQService = new SessionCreateRQService
    {
        MessageHeaderValue = messageHeader,
        SecurityValue = security
    };

    SessionCreateRS scRSService = sessionCreateRQService.SessionCreateRQ(sessionCreateRQ);

}
...