api - 队列 PNR 返回“NO PNR IN AAA”(QueuePlaceLLSRQ)
问题描述
我正在尝试使用“放置队列消息 (QueuePlaceLLSRQ)” API 对 PNR 进行排队。所以,我按照这些步骤来排队 PNR。
第 1 步 - 创建会话 (SessionCreateRQ)
第 2 步 - 检索行程 (GetReservationRQ)
第 3 步 - 队列 PNR (QueuePlaceLLSRQ)
我被困在第 3 步,它总是返回一条错误消息 -NO PNR IN AAA
这实际上是什么意思,我怎样才能避免这个错误?
以下是请求和响应有效载荷数据
请求数据
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<MessageHeader xmlns="http://www.ebxml.org/namespaces/messageHeader">
<From>
<PartyId>sample.url.of.sabre.client.com</PartyId>
</From>
<To>
<PartyId>webservices.sabre.com</PartyId>
</To>
<CPAId></CPAId>
<ConversationId>convid</ConversationId>
<Service>QueuePlaceLLSRQ</Service>
<Action>QueuePlaceLLSRQ</Action>
<MessageData>
<MessageId>convid112</MessageId>
<Timestamp>2020-04-20T09:25:27Z</Timestamp>
<TimeToLive>2020-04-20T09:25:27Z</TimeToLive>
</MessageData>
</MessageHeader>
<Security xmlns="http://schemas.xmlsoap.org/ws/2002/12/secext">
<BinarySecurityToken EncodingType="Base64Binary" valueType="String" >Shared/IDL:IceSess\/SessMgr:1\.0.IDL/Common/!ICESMS\/ACPCRTC!ICESMSLB\/CRT.LB!1587564276872!533!5</BinarySecurityToken>
</Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<QueuePlaceRQ Version="2.0.4" xmlns="http://webservices.sabre.com/sabreXML/2011/10" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<QueueInfo>
<QueueIdentifier Number="22" PrefatoryInstructionCode="11" PseudoCityCode="****"/>
</QueueInfo>
</QueuePlaceRQ>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
响应数据
<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<eb:MessageHeader xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" eb:version="1.0" soap-env:mustUnderstand="1">
<eb:From>
<eb:PartyId eb:type="URI">webservices.sabre.com</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type="URI">sample.url.of.sabre.client.com</eb:PartyId>
</eb:To>
<eb:ConversationId>convid</eb:ConversationId>
<eb:Service>QueuePlaceLLSRQ</eb:Service>
<eb:Action>QueuePlaceLLSRS</eb:Action>
<eb:MessageData>
<eb:MessageId>1815326504754440150</eb:MessageId>
<eb:Timestamp>2020-04-22T14:01:16</eb:Timestamp>
<eb:RefToMessageId>convid</eb:RefToMessageId>
</eb:MessageData>
</eb:MessageHeader>
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
<wsse:BinarySecurityToken valueType="String" EncodingType="wsse:Base64Binary">Shared/IDL:IceSess\/SessMgr:1\.0.IDL/Common/!ICESMS\/ACPCRTC!ICESMSLB\/CRT.LB!1587564074215!6005!9</wsse:BinarySecurityToken>
</wsse:Security>
</soap-env:Header>
<soap-env:Body>
<QueuePlaceRS xmlns="http://webservices.sabre.com/sabreXML/2011/10" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:stl="http://services.sabre.com/STL/v01" Version="2.0.4">
<stl:ApplicationResults status="NotProcessed">
<stl:Error type="BusinessLogic" timeStamp="2020-04-22T09:01:16-05:00">
<stl:SystemSpecificResults>
<stl:Message>NO PNR IN AAA</stl:Message>
<stl:ShortText>ERR.SWS.HOST.ERROR_IN_RESPONSE</stl:ShortText>
</stl:SystemSpecificResults>
</stl:Error>
</stl:ApplicationResults>
</QueuePlaceRS>
</soap-env:Body>
</soap-env:Envelope>
解决方案
我认为您要么GetReservation
使用Stateless
而不是调用Stateful
,因此尝试排队时预订不在工作区,或者使用不同的会话。
如果这是您对预订所做的唯一事情,您可以添加 UniqueId 并将其放入该队列中,甚至无需检索它。
<UniqueID ID="ABC123"/>
推荐阅读
- xcode - 是否可以更改 xcode 项目中使用的 ImageAssets 的优先级
- php - websocket 和 webserver 保持在 80 端口
- java - 即使添加了 maven 依赖项后,NoClassDefFound 也会出错
- javascript - 如何调度一个动作以返回默认状态
- java - spring-data-gremlin 中是否支持自定义查询?
- java - MongoDB 和 Spring Data - 与组的聚合返回不正确的 id
- php - laravel Socialite 使用特定域名登录(例如 abc.edu.pk)
- java - Kie Server 指向非 Web Socket 控制器
- c - 为什么Linux C串行只读在高CPU下工作?
- salesforce - Salesforce 中的批量更新