0

次のコードを使用してリクエストを作成しました。

            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:20001209-133003-2333@clientofsabre.com1",
                                  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

リモート スタック トレース: サーバー スタック トレース: System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime 操作、ProxyRpc& rpc) で System.ServiceModel.Channels.ServiceChannel.Call(String アクション、Boolean oneway、ProxyOperationRuntime 操作、Object[] ins、 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall、ProxyOperationRuntime 操作) で System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage メッセージ) で Object[] outs、TimeSpan タイムアウト)

[0] で例外が再スローされました:

私が偽装しようとしている旅程は、次のセグメントの往復です: DFW->LAS、出発: 2016-02-07T00:00:00、到着: 2016-02-07T00:00:00、航空会社: NK、 FlightNumber: 469 LAS->DFW、出発: 2016-02-14T00:00:00、到着: 2016-02-14T00:00:00、航空会社: NK、FlightNumber: 470

そこで、OriginDestinationInformation に 2 つの OTA_AirBookRQFlightSegment を持つ OTA_AirBookRQ を作成しました (1 つはインバウンド DFW->LAS 用、もう 1 つはアウトバウンド用)。

日付/時刻形式で遊んでみました。たとえば、2016-02-07T00:00:00 の代わりに : 2016-02-07T00:00 または : 2016-02-07T を指定しますが、毎回同じ例外が発生しますまた、DepartureDateTime (到着日時なし) のみを使用してみましたが、同じ結果です。

4

1 に答える 1

0

OTA_AirBookLLSRQ を呼び出していますが、別のアクション msgHeader.Action = "OTA_AirAvailLLSRQ" を送信しています。

残りのリクエストが正しければ、次のように変更します。 msgHeader.Action = "OTA_AirBookLLSRQ";

于 2016-02-04T14:25:52.390 に答える