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("\r\n", "").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的情况
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?