using JiaZhiQuan.Common.JuheAPI.PhoneNumber; using Newtonsoft.Json; using System.Net.Http; using System.Threading.Tasks; using System; using Wicture.DbRESTFul; namespace JiaZhiQuan.Common.JuheAPI.IpAddress { /// /// IP归属地查询 /// public class JuheIpAddressUtils { const string JUHE_IP_KEY = "fe8483723642e2ec7df225caf4ae7889"; /// /// 调用聚合API查询IP信息 /// Item1:是不是需要保存结果到ES,Item2:拼接的地址信息,Item3:省,Item4:市 /// public static async Task<(bool, string, string, string)> GetIpAddressAsync(string ip, HttpClient client) { try { var res = await client.GetStringAsync($"http://apis.juhe.cn/ip/ipNewV3?ip={ip}&key={JUHE_IP_KEY}"); var obj = JsonConvert.DeserializeObject>(res); if (obj.ResultCode == "200" && obj.ErrorCode == 0) { string province = string.IsNullOrEmpty(obj.Result.Province) ? "未知" : obj.Result.Province, city = string.IsNullOrEmpty(obj.Result.City) ? "未知" : obj.Result.City; string addr = !province.Equals(city) ? $"{province}{city}" : province; return (true, addr, province, city); } // 查询无结果 else if (obj.ResultCode == "200" && (obj.ErrorCode == 200103 || obj.ErrorCode == 200105)) { return (true, "未知", "未知", "未知"); } else { LoggerManager.Logger.Error($"调用聚合IP归属地API失败,请求结果:" + res); return (false, "未知", "未知", "未知"); } } catch (Exception ex) { LoggerManager.Logger.Error(ex, $"调用聚合IP归属地API报错:" + ex.Message); return (false, "未知", "未知", "未知"); } } } public class JuheMobileAddressResultDetails { public string Country { get; set; } public string Province { get; set; } public string City { get; set; } public string District { get; set; } public string Isp { get; set; } } }