using System; using System.Net.Http; using System.Threading.Tasks; using Newtonsoft.Json.Linq; using System.Web; class Bazi { private const string AppKey = "YOUR_APPKEY_HERE"; public static async Task QueryAsync(string city, int year, int month, int day, int hour, int minute, int sex, int istaiyang, int islunar) { try { // 构建请求 URL string url = $"https://api.jisuapi.com/bazi/paipan?appkey={AppKey}&city={HttpUtility.UrlEncode(city)}&year={year}&month={month}&day={day}&hour={hour}&minute={minute}&sex={sex}&istaiyang={istaiyang}&islunar={islunar}"; using var client = new HttpClient(); // 发送 GET 请求 var response = await client.GetAsync(url); // 确保请求成功 response.EnsureSuccessStatusCode(); // 读取响应内容 var responseBody = await response.Content.ReadAsStringAsync(); // 解析 JSON 数据 var jsonarr = JObject.Parse(responseBody); // 检查状态码 if (jsonarr["status"]?.Value() != 0) { Console.WriteLine(jsonarr["msg"]?.Value () ?? "未知错误"); return; } var result = jsonarr["result"] as JObject; if (result == null) { Console.WriteLine("未获取到有效结果"); return; } // 输出基本信息 PrintValue(result, new[] { "year", "month", "day", "hour", "minute", "name", "city", "istaiyang", "lunaryear", "lunarmonth", "lunarday", "lunarhour", "animal", "yearganzhi" }); // 输出节气信息 PrintSection(result, "jieqiprev", "上一个节气:"); PrintSection(result, "jieqinext", "下一个节气:"); // 输出八字相关信息 PrintArray(result, "bazi", $"{result["taiyuan"]} {result["minggong"]} {JoinArray(result["xunkong"])}"); PrintArray(result, "qiyun", JoinArray(result["jiaoyun"])); PrintQianKunZao(result); PrintArray(result, "nayin"); // 输出神煞信息 PrintNestedArray(result, "shensha", "神煞信息"); // 输出大运信息 PrintDayun(result); // 输出流年信息 PrintNestedArray(result, "liunian", "流年信息", "流年:"); } catch (HttpRequestException ex) { Console.WriteLine($"请求出错: {ex.Message}"); } catch (Exception ex) { Console.WriteLine($"发生错误: {ex.Message}"); } } private static void PrintValue(JObject obj, string[] keys) { foreach (var key in keys) { Console.Write(obj[key]?.Value () ?? "null "); } Console.WriteLine(); } private static void PrintSection(JObject result, string key, string title) { Console.WriteLine(title); var section = result[key] as JObject; Console.WriteLine($"{section?["jieqiname"]?.Value () ?? "null"} {section?["date"]?.Value () ?? "null"}"); } private static string JoinArray(JToken token) { if (token?.Type == JTokenType.Array) { var arr = (JArray)token; return string.Join(" ", arr); } return "null"; } private static void PrintArray(JObject result, string key, string extra = "") { Console.WriteLine($"{JoinArray(result[key])} {extra}"); } private static void PrintQianKunZao(JObject result) { var qiankunzao = result["qiankunzao"]; if (qiankunzao?.Type == JTokenType.Array) { var arr = (JArray)qiankunzao; if (arr.Count >= 3 && arr[0]?.Type == JTokenType.Array && arr[1]?.Type == JTokenType.Array && arr[2]?.Type == JTokenType.Array) { Console.WriteLine($"{JoinArray(arr[0])} {JoinArray(arr[1])} {JoinArray(arr[2])}"); return; } } Console.WriteLine("乾坤造信息不完整"); } private static void PrintDayun(JObject result) { var dayun = result["dayun"] as JObject; if (dayun == null) { Console.WriteLine("大运信息缺失"); return; } foreach (var key in new[] { "nayin", "shishen", "ganzhi", "sui" }) { PrintArray(dayun, key); } } private static void PrintNestedArray(JObject result, string key, string errorMsg, string title = "") { if (!string.IsNullOrEmpty(title)) { Console.WriteLine(title); } var arr = result[key]; if (arr?.Type == JTokenType.Array) { foreach (var item in (JArray)arr) { if (item.Type == JTokenType.Array) { Console.WriteLine(string.Join(" ", (JArray)item)); } else { Console.WriteLine("null"); } } } else { Console.WriteLine($"{errorMsg} 缺失"); } } public static async Task Main() { string city = ""; int year = 2009; int month = 10; int day = 18; int hour = 2; int minute = 5; int sex = 1; int istaiyang = 0; int islunar = 0; await Bazi.QueryAsync(city, year, month, day, hour, minute, sex, istaiyang, islunar); } }
© 2015-2025 杭州极速互联科技有限公司 版权所有 浙ICP备17047587号-4 浙公网安备33010502005096 增值电信业务经营许可证:浙B2-20190875