webapi调用

1.

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ToolClass.CargoEntity.CargoBillEntity
{
    public class ExcResultToJson
    {
        /// <summary>
        /// 是否执行成功
        /// </summary>
        public bool IsSuccess = false;

        /// <summary>
        /// 错误信息
        /// </summary>
        public string ErrMessage = string.Empty;

        /// <summary>
        /// 返回的数据
        /// </summary>
        public string DataStr = string.Empty;

        public ExcResultToJson(bool isSuccess, string errMessage, object data)
        {
            this.IsSuccess = isSuccess;
            this.ErrMessage = errMessage;
            this.DataStr = JsonSerialize(data);
        }

        public override string ToString()
        {
            return JsonSerialize(this);
        }

        public T GetData<T>()
        {
            return JsonDeserialize<T>(this.DataStr);
        }

        /// <summary>
        /// 序列化对象
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static string JsonSerialize(object value)
        {
            if (value == null)
                return null;
            Type type = value.GetType();

            JsonSerializerSettings json = new JsonSerializerSettings();

            json.NullValueHandling = NullValueHandling.Ignore;
            json.ObjectCreationHandling = Newtonsoft.Json.ObjectCreationHandling.Replace;
            json.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore;
            json.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

            if (type == typeof(DataTable))
                json.Converters.Add(new DataTableConverter());
            else if (type == typeof(DataSet))
                json.Converters.Add(new DataSetConverter());

            IsoDateTimeConverter s = new IsoDateTimeConverter();
            s.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
            json.Converters.Add(s);
            return JsonConvert.SerializeObject(value, Formatting.None, json);
        }

        /// <summary>
        /// 反序列化字段
        /// </summary>
        /// <param name="jsonText">json字符串</param>
        /// <param name="valueType">对象类型</param>
        /// <returns></returns>
        public static T JsonDeserialize<T>(string jsonText)
        {
            if (jsonText == null)
            { return default(T); }

            JsonSerializerSettings json = new JsonSerializerSettings();
            json.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
            json.ObjectCreationHandling = Newtonsoft.Json.ObjectCreationHandling.Replace;
            json.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore;
            json.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

            return JsonConvert.DeserializeObject<T>(jsonText, json);
        }
    }
}

2.

    public List<FocInfoEntity> GetFightData(string lg, string flightDate, string airline, string flightno, string dep, string arr, ref string strerrmsg)
        {
            String strairline, strflightno, strdepart, strdest;
            DateTime dksrq, djsrq;
            if (string.IsNullOrEmpty(flightDate))
            {
                strerrmsg = lg != "EN" ? "请输入航班日期!" : "Please input flight date !";
                return null;
            }
            if (string.IsNullOrEmpty(flightno)&& string.IsNullOrEmpty(dep) && string.IsNullOrEmpty(arr))
            {
                strerrmsg = lg != "EN" ? "航班号、始发站、目的站不能都为空!" : "  You must input one from flight number, departure station and destination station !";
                return null;
            }
            try
            {
                dksrq = Convert.ToDateTime(flightDate);
                djsrq = Convert.ToDateTime(flightDate);
            }
            catch (Exception e)
            {
                return null;
            }
            
            string sdksrq = dksrq.ToShortDateString();
            dksrq = Convert.ToDateTime(sdksrq);
            djsrq = Convert.ToDateTime(sdksrq);
            strairline = airline;// "MF";
            strflightno = airline+flightno;// "8575";
            strdepart = dep;//"厦门";
            strdest = arr;// "北京";
            strerrmsg = string.Empty;
            try
            {
                 
                var FlightSearchUrl = System.Configuration.ConfigurationManager.AppSettings.Get("FocUrl");
                string esbHeaderName = ESBHelper.getEsbHeaderName();
                RestClient restClient = new RestClient(FlightSearchUrl);
                var restRequest = new RestRequest("/marketing/flight", Method.GET);
                FocRequestInfo r = new FocRequestInfo();
                r.departureDate = dksrq.ToString("yyyy-MM-dd");
                r.flightNo = strflightno;
                r.orig = strdepart;
                r.dest = strdest;
                r.includeCancelledFlight = false;
                restRequest.AddObject(r);
                var response = restClient.Execute(restRequest);
                string s = response.Content;
                JArray arrs = ExcResultToJson.JsonDeserialize<JArray>(s);
                List<FocInfoEntity> focentitylist = new List<FocInfoEntity>();
                foreach (var obj in arrs)
                {
                    try
                    {
                        
                        FocInfoEntity focentity = new FocInfoEntity();
                        focentity.FLIGHT_DATE = obj["departureDate"].ToString();
                        focentity.FLIGHT_NO = obj["flightDesignator"]["airlineCode"].ToString() + obj["flightDesignator"]["flightNumber"].ToString();
                        JArray routes = ExcResultToJson.JsonDeserialize<JArray>(obj["route"].ToString());//.ToString().Replace(""", "").Replace("[", "").Replace("]", "").Replace("
", "").Replace(" ", "").Split(new char[] { ',' });
                        if (routes.Count >= 2)
                        {
                            focentity.DEPARTURE_AIRPORT = routes[0].ToString();
                            focentity.ARRIVAL_AIRPORT = routes[1].ToString();
                        }
                        JArray arrFlightLegs = ExcResultToJson.JsonDeserialize<JArray>(obj["flightLegs"].ToString());
                        if (arrFlightLegs.Count > 0)
                        {
                            try
                            {
                                focentity.AC_TYPE = arrFlightLegs[0]["aircraft"]["aircraftType"]["model"].ToString();
                                focentity.AC_REG = arrFlightLegs[0]["aircraft"]["registrationNum"].ToString();
                            }
                            catch
                            {
                            }
                            try
                            {
                                focentity.STD = ConvertToTimeString(arrFlightLegs[0]["departure"]["takeOffAt"]["estimated"].ToString());
                                focentity.ATD = ConvertToTimeString(arrFlightLegs[0]["departure"]["takeOffAt"]["actual"].ToString());
                            }
                            catch
                            {
                            }
                            try
                            {
                                focentity.STA = ConvertToTimeString(arrFlightLegs[0]["arrival"]["landAt"]["estimated"].ToString());
                                focentity.ATA = ConvertToTimeString(arrFlightLegs[0]["arrival"]["landAt"]["actual"].ToString());
                            }
                            catch
                            {
                            }
                        }
                        focentitylist.Add(focentity);
                        if (routes.Count >= 3) //二程航班信息 routes["XNN","PEK","AMS"]
                        {
                            FocInfoEntity focentity2 = new FocInfoEntity();
                            focentity2.FLIGHT_DATE = obj["departureDate"].ToString();
                            focentity2.FLIGHT_NO = obj["flightDesignator"]["airlineCode"].ToString() + obj["flightDesignator"]["flightNumber"].ToString();
                            focentity2.DEPARTURE_AIRPORT = routes[1].ToString();
                            focentity2.ARRIVAL_AIRPORT = routes[2].ToString();
                            if (arrFlightLegs.Count >= 2)
                            {
                                try
                                {
                                    focentity2.AC_TYPE = arrFlightLegs[1]["aircraft"]["aircraftType"]["model"].ToString();
                                    focentity2.AC_REG = arrFlightLegs[1]["aircraft"]["registrationNum"].ToString();
                                }
                                catch
                                {
                                }
                                try
                                {
                                    focentity2.STD = ConvertToTimeString(arrFlightLegs[1]["departure"]["takeOffAt"]["estimated"].ToString());
                                    focentity2.ATD = ConvertToTimeString(arrFlightLegs[1]["departure"]["takeOffAt"]["actual"].ToString());
                                }
                                catch
                                {
                                }
                                try
                                {
                                    focentity2.STA = ConvertToTimeString(arrFlightLegs[1]["arrival"]["landAt"]["estimated"].ToString());
                                    focentity2.ATA = ConvertToTimeString(arrFlightLegs[1]["arrival"]["landAt"]["actual"].ToString());
                                }
                                catch
                                {
                                }
                            }
                            focentitylist.Add(focentity2);
                        }
                    }
                    catch
                    {
                    }
                }
                return focentitylist;
            }
            catch (Exception e)
            {
                strerrmsg = e.Message;
                return null;
            }

        }

需要注意为null的情况

原文地址:https://www.cnblogs.com/mengxiangzhi/p/9361087.html