API工作尚未返回"超时"作为回应

时间:2015-04-13 02:26:05

标签: c# asp.net api

我有一个服务正在使用的API,服务将Json数据POST到API,API将POSTed数据保存到数据库,然后返回POST的内容。

我们尝试过多次使用DHC到202.59.42.244/api/BoardingPass(这是API) 使用Json Data:

{"Id":0,"BaggageAllowance":20,"FareType":"Starter Max","PreArrivalTimeInMinutes":30,"FlightNumber":"506","FlightType":"DOM","CarrierCode":"JQ","Gate":"","CodeShareFlight":null,"FlightDescription":"Codeshare with Qantas","DepartureAirport":"Melbourne (Tullamarine)","DepartureAirportCode":"MEL","DepartureDateUTC":"2015-04-14","DepartureTime":"09:20","ArrivalAirport":"Sydney","ArrivalAirportCode":"SYD","ArrivalTime":"10:45","PNR":"O8GNRF","BookingCulture":"en-AU","BoardingSequenceNumber":"002","SeatNumber":"07B","SpecialServiceRequests":"WCEM,WCID","isBannerShow":true,"NumberOfBags":2,"PassengerId":149153129,"FirstName":"S","LastName":"WILLIAMS","EmailAddress":"quenie.daloso@bcstechnology.com.au","PassportNumber":null,"PassportNationality":null,"PassportExpiryDate":"0001-01-01","Barcode":"002050627","ConnectingFlight":false,"CounterAndBagDropOpenInMinutes":90,"CounterAndBagDropCloseInMinutes":50,"Status":0,"Token":null,"CarryOnBaggage":7}

并且POST请求返回json数据,这是一个成功!

但是这个web-checkin服务将相同的数据发布到API,API工作,API将POSTed数据保存到DB,然后返回“Timeout something something”。

这究竟意味着什么?它到达API并使API完成其工作,但无法返回json数据。

这是API的代码。

 public IHttpActionResult PostBoardingPass(BoardingPassRequest request)
    {
      try
      {
        if (!ModelState.IsValid)
        {
          return BadRequest(ModelState);
        }

        if (request != null)
        {
          #region Error Handling parameters
          //some error handling here
          #endregion

          BoardingPass result;
          //check duplicates
          var isDuplicate = helper.CheckDuplicateBoardingPass(request);
          if (isDuplicate)
          {
            //Update Boarding Pass in the database
            result = helper.UpdateBoardingPass(request);
            //parse to send as result
            return Ok(helper.ParseBoardingPass(result));
          }

          // Create Boarding Pass in the database
          result = helper.CreateBoardingPass(request);
          //return CreatedAtRoute("DefaultApi", new { id = result.Id }, helper.ParseBoardingPass(result));
          return Ok(helper.ParseBoardingPass(result));
        }
        return BadRequest(Resource.ResourceManager.GetString("GeneralNullModel"));
      }
      catch (Exception e)
      {
        //a method to log errors
        LogError(e);
        throw;
      }
    }

以下是调用API的网络签入代码。

   static void Main(string[] args)
    {
        string responseFromServer = string.Empty;
        var webRequest = (HttpWebRequest)WebRequest.Create("http://202.xx.xx.244:80/api/BoardingPass");
        webRequest.Method = "POST";
        webRequest.Accept = "application/json";
        webRequest.ContentType = "application/json";
        //var boardingPassData = JsonConvert.SerializeObject(boardingPassModelData);
        var boardingPassData = "{\"Id\":0,\"BaggageAllowance\":20,\"FareType\":\"Starter Max\",\"PreArrivalTimeInMinutes\":30,\"FlightNumber\":\"506\",\"FlightType\":\"DOM\",\"CarrierCode\":\"JQ\",\"Gate\":\"\",\"CodeShareFlight\":null,\"FlightDescription\":\"Codeshare with Qantas\",\"DepartureAirport\":\"Melbourne (Tullamarine)\",\"DepartureAirportCode\":\"MEL\",\"DepartureDateUTC\":\"2015-04-20\",\"DepartureTime\":\"09:20\",\"ArrivalAirport\":\"Sydney\",\"ArrivalAirportCode\":\"SYD\",\"ArrivalTime\":\"10:45\",\"PNR\":\"O8GNRF\",\"BookingCulture\":\"en-AU\",\"BoardingSequenceNumber\":\"002\",\"SeatNumber\":\"07B\",\"SpecialServiceRequests\":\"WCEM,WCID\",\"isBannerShow\":true,\"NumberOfBags\":2,\"PassengerId\":149153129,\"FirstName\":\"S\",\"LastName\":\"WILLIAMS\",\"EmailAddress\":\"quenie.daloso@bcstechnology.com.au\",\"PassportNumber\":null,\"PassportNationality\":null,\"PassportExpiryDate\":\"0001-01-01\",\"Barcode\":\"002050627\",\"ConnectingFlight\":false,\"CounterAndBagDropOpenInMinutes\":90,\"CounterAndBagDropCloseInMinutes\":50,\"Status\":0,\"Token\":null,\"CarryOnBaggage\":7}";
        //_logger.Info("API Request: " + boardingPassData); //- I sent this logged request in trail mail ({"Id":0,"BaggageAllowance":20,………… CarryOnBaggage":7})
        byte[] boardingPassbyteArray = Encoding.UTF8.GetBytes(boardingPassData);
        webRequest.ContentLength = boardingPassbyteArray.Length;
        Stream stream = webRequest.GetRequestStream();
        stream.Write(boardingPassbyteArray, 0, boardingPassbyteArray.Length);
        stream.Close();

        using (var webResponse = (HttpWebResponse)webRequest.GetResponse())
        {
          var status = webResponse.StatusDescription;
          Console.WriteLine(status);
          stream = webResponse.GetResponseStream();
          if (stream != null)
          {
            var reader = new StreamReader(stream);
            responseFromServer = reader.ReadToEnd();
            Console.WriteLine(responseFromServer);
            reader.Close();
            stream.Close();
          }
        }
      Console.ReadLine();
    }

我已经为自己测试了网络签名代码,它确实有效!但我不知道什么时候API返回“超时某事”错误,即使它做了它需要做的事情?

0 个答案:

没有答案