我已经使用 PHP 成功实现了SessionCreateRQ和其他服务,我很困惑当安全令牌过期时该怎么做。根据主题会话管理概述中提供的documentation,可以使用服务 SessionValidateRQ 刷新会话,但在搜索时我找不到任何文档。我在搜索时只找到Refresh Session文档。
是否有任何 SessionValidateRQ 服务的文档? 我有点困惑如何管理api的会话?
答案 0 :(得分:1)
我在我开发的应用程序中使用OTA_PingRQ。通常,与Sabre的每次交互都会延长会话时间,但是有些情况下您希望手动延长会话时间。
考虑这种情况 - Sabre超时发生在自上次发送Sabre请求后15分钟,并且您已经有用户在您的应用程序中输入乘客数据。很明显,有时用户需要超过15分钟才能完成操作。在这种情况下,您可以在14分钟后将OTA_PingRQ发送给Sabre,以保持会话存活(现在您有下一个15分钟的间隔,直到到期)
答案 1 :(得分:0)
您似乎已经检查了与效果和会话相关的最佳做法。
通常(并且取决于您的事务量)您将拥有一个进程/作业,在应用程序启动时启动给定数量的会话,并在超时之前刷新它们。这样做是为了确保用户可以完成“购物”。按需处理。
在预订时,您可以按顺序使用PassengerDetails和EnhancedAirBook服务(在捕获乘客姓名,选择的航班等之后),并使用短暂的会话(意味着您使用SessionCreateRQ,然后按顺序调用这两个服务,然后使用SessionCloseRQ关闭会话... ...
答案 2 :(得分:0)
目前我使用SessionValidateRQ进行保持活动会话。
msgHeader.Service = new Service();
msgHeader.Service.Value = "SessionValidateRQ";
msgHeader.Action = "SessionValidateRQ";
//Set credentials to create session
Security secure = new Security();
secure.UsernameToken = new SecurityUsernameToken();
secure.UsernameToken.Username = Config.WC_EPR;
secure.UsernameToken.Password = Config.WC_PASSCODE;
secure.UsernameToken.Organization = Config.WC_IPCC;
secure.UsernameToken.Domain = Config.WC_DOMAIN;
secure.BinarySecurityToken = sToken;
Object ssValidateRq = new object();
var ret = svc.SessionValidateRQ(ref msgHeader, ref secure, ssValidateRq);