using Newtonsoft.Json; using NLog; using System; using System.Net.Http; using System.Threading.Tasks; using Wicture.DbRESTFul; namespace JiaZhiQuan.Common.JuheAPI.PhoneNumber { /// /// 手机号归属地查询 /// /// /// /// Item1: 是不是要保存到ES,Item2: 地址,Item3: 省,Item4: 市 public class JuheMobileAddressUtils { const string JUHE_PHONE_KEY = "641cf7b85574a965e6eb3d4864e18da3"; public static async Task<(bool, string, string, string)> GetMobileAddressAsync(string mobile, HttpClient client) { try { var res = await client.GetStringAsync($"http://apis.juhe.cn/mobile/get?phone={mobile}&key={JUHE_PHONE_KEY}"); var obj = JsonConvert.DeserializeObject>(res); if (obj.ResultCode == "200" && obj.ErrorCode == 0) { string company = string.IsNullOrEmpty(obj.Result.Company) ? "未知" : obj.Result.Company, province = string.IsNullOrEmpty(obj.Result.Province) ? "未知" : obj.Result.Province, city = string.IsNullOrEmpty(obj.Result.City) ? "未知" : obj.Result.City; string addr = $"【{company}】-【{province}-{city}】"; return (true, addr, province, city); } // 查询无结果 else if (obj.ResultCode == "200" && obj.ErrorCode == 201103) { return (true, "未知", "未知", "未知"); } else { LoggerManager.Logger.Error($"调用聚合手机号归属地API失败,请求结果:" + res); return (false, "未知", "未知", "未知"); } } catch (Exception ex) { LoggerManager.Logger.Error(ex, $"调用聚合手机号归属地API报错:" + ex.Message); return (false, "未知", "未知", "未知"); } } } public class JuheMobileAddressResultDetails { public string Province { get; set; } public string City { get; set; } public string AreaCode { get; set; } public string Zip { get; set; } public string Company { get; set; } public string Card { get; set; } } }