Я использовал следующий код для создания запроса:продолжать получать ERR.SWS.CLIENT.VALIDATION_FAILED исключения при вызове OTA_AirBookRQ
var dt = DateTime.UtcNow;
var tstamp = dt.ToString("s") + "Z";
var msgHeader = new com.Sabre.WebServiceConsumer.LLS.MessageHeader { ConversationId = convid };
var from = new com.Sabre.WebServiceConsumer.LLS.From();
var fromPartyId = new com.Sabre.WebServiceConsumer.LLS.PartyId();
var fromPartyIdArr = new com.Sabre.WebServiceConsumer.LLS.PartyId[1];
fromPartyId.Value = "WebServiceClient";
fromPartyIdArr[0] = fromPartyId;
from.PartyId = fromPartyIdArr;
msgHeader.From = from;
var to = new com.Sabre.WebServiceConsumer.LLS.To();
var toPartyId = new com.Sabre.WebServiceConsumer.LLS.PartyId();
var toPartyIdArr = new com.Sabre.WebServiceConsumer.LLS.PartyId[1];
toPartyId.Value = "https://sws3-crt.cert.sabre.com";
toPartyIdArr[0] = toPartyId;
to.PartyId = toPartyIdArr;
msgHeader.To = to;
msgHeader.CPAId = ipcc;
msgHeader.Action = "OTA_AirAvailLLSRQ";
var service = new com.Sabre.WebServiceConsumer.LLS.Service { Value = "AirAvail" };
msgHeader.Service = service;
//Create the request object req and the value for the IPCC in the payload of the request.
var flightSegments = new List<OTA_AirBookRQFlightSegment>();
foreach (var flightData in itinerary.FlightsData)
{
var currSeg = new OTA_AirBookRQFlightSegment()
{
Status = "QF",
FlightNumber = flightData.FlightNum,
NumberInParty = "1",
ResBookDesigCode = "Y",
OriginLocation =
new OTA_AirBookRQFlightSegmentOriginLocation
{
LocationCode
=
flightData
.Dep
},
DestinationLocation =
new OTA_AirBookRQFlightSegmentDestinationLocation
{
LocationCode
=
flightData
.Dest
},
MarketingAirline =
new OTA_AirBookRQFlightSegmentMarketingAirline
{
Code
=
flightData
.Carrier,
FlightNumber
=
flightData
.FlightNum
},
};
if (flightData.DepartureDate != null)
{
currSeg.DepartureDateTime = flightData.DepartureDate.Value.ToString("s");
}
if (flightData.ArrivalDate != null)
{
currSeg.ArrivalDateTime = flightData.ArrivalDate.Value.ToString("s");
}
flightSegments.Add(currSeg);
}
var req = new OTA_AirBookRQ {ReturnHostCommand = true, OriginDestinationInformation = flightSegments.ToArray()};
var msgData = new com.Sabre.WebServiceConsumer.LLS.MessageData
{
MessageId =
"mid:[email protected]",
Timestamp = tstamp
};
msgHeader.MessageData = msgData;
var security = new com.Sabre.WebServiceConsumer.LLS.Security1 { BinarySecurityToken = securitytoken };
var c = new OTA_AirBookPortTypeClient();
var resp = c.OTA_AirBookRQ(ref msgHeader, ref security, req);
if (resp.ApplicationResults.status == com.Sabre.WebServiceConsumer.LLS.CompletionCodes.Complete) return true;
я получил следующее исключение:
ERR.SWS.CLIENT .VALIDATION_FAILED
Удаленный Stack след: Сервер трассировки стека: на System.ServiceModel.Channels.ServiceChannel.HandleReply (ProxyOperationRuntime операции, ProxyRpc & RPC) в System.ServiceModel.Channels.ServiceChannel.Call (Action String, Логическое односторонняя, операция ProxyOperationRuntime, Object [] модули, Object [] выходы, TimeSpan тайм-аут) при System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage methodCall, операция ProxyOperationRuntime) на System.ServiceModel.Channels.ServiceChannelProxy.Invoke (IMessage сообщение)
Exception при вызваны повторно [0]:
Маршрут Я пытаюсь подделать маль ok - в оба конца со следующими сегментами: DFW-> LAS, Отправление: 2016-02-07T00: 00: 00, Прибытие: 2016-02-07T00: 00: 00, Перевозчик: NK, Номер рейса: 469 LAS-> DFW, Отправление: 2016-02-14T00: 00: 00, прибытие: 2016-02-14T00: 00: 00, Carrier: NK, самалёт: 470
Так что я создал OTA_AirBookRQ с 2 OTA_AirBookRQFlightSegment в OriginDestinationInformation (один для входящего DFW-> LAS и один для исходящего)
Я даже попытался сыграть с форматом даты/времени. Например, дайте: 2016-02-07T00: 00 или: 2016-02-07T вместо 2016-02-07T00: 00: 00, но получил одинаковое исключение каждый раз. Также попытался использовать только DepartureDateTime (без даты заезда) и получил тот же результат.
Можете ли вы попробовать разместить серийный XML-код, который отправляется Sabre? Таким образом, проще понять, что не так в запросе. – fcarreno