这篇文章主要介绍了C#根据IP地址查询所属地区实例详解,调用的接口是免费的接口,有需要的同学可以研究下
ip-api.com接口(解析 json需要引入Newtonsoft.Json.dll ):
/// <summary>
/// 根据IP 获取物理地址
/// </summary>
/// <param name="ip">Ip地址</param>
/// <returns></returns>
public static string GetIpAddress(string ip)
{
string url = "http://ip-api.com/json/"+ip+"?lang=zh-CN";
string result = "";
WebRequest wrt = null;
WebResponse wrp = null;
try
{
wrt = WebRequest.Create(url);
wrt.Credentials = CredentialCache.DefaultCredentials;
wrp = wrt.GetResponse();
StreamReader sr = new StreamReader(wrp.GetResponseStream(), Encoding.UTF8);
//获取到的是Json数据
string html = sr.ReadToEnd();
//Newtonsoft.Json读取数据
JObject obj = JsonConvert.DeserializeObject<JObject>(html);
string city = obj["city"].ToString();
string province = obj["regionName"].ToString();
result = city.Equals(province) ? city : (province + city);
}
catch (Exception)
{
}
finally
{
if (wrp != null)
wrp.Close();
if (wrt != null)
wrt.Abort();
}
return result;
}
126.net接口:
/// <summary>
/// 根据IP 获取物理地址
/// </summary>
/// <param name="ip">Ip地址</param>
/// <returns></returns>
public static string GetstringIpAddress(string ip)
{
string url = "http://ip.ws.126.net/ipquery?ip="+ip;
string result="";
WebRequest wrt = null;
WebResponse wrp = null;
try
{
wrt = WebRequest.Create(url);
wrt.Credentials = CredentialCache.DefaultCredentials;
wrp = wrt.GetResponse();
StreamReader sr = new StreamReader(wrp.GetResponseStream(), Encoding.Default);
//获取到的数据格式:var lo="江苏省", lc="镇江市"; var localAddress={city:"镇江市", province:"江苏省"}
string html = sr.ReadToEnd();
string pattern = "{city:\"(?<key1>.*?)\", province:\"(?<key2>.*?)\"}";
Regex regex = new Regex(pattern, RegexOptions.None);
Match match = regex.Match(html);
string city=match.Groups["key1"].Value;
string province=match.Groups["key2"].Value;
result = city.Equals(province) ? city : (province + city);
}
catch (Exception)
{
}
finally
{
if (wrp != null)
wrp.Close();
if (wrt != null)
wrt.Abort();
}
return result;
}
到此这篇关于C#根据IP地址查询所属地区实例详解的文章就介绍到这了,更多相关C#根据IP地址查询所属地区内容请搜索得得之家以前的文章希望大家以后多多支持得得之家!
沃梦达教程
本文标题为:C#根据IP地址查询所属地区实例详解
基础教程推荐
猜你喜欢
- 当键值未知时反序列化 JSON 2022-01-01
- Page.OnAppearing 中的 Xamarin.Forms Page.DisplayAlert 2022-01-01
- 覆盖 Json.Net 中的默认原始类型处理 2022-01-01
- C# - 如何列出发布到 ASPX 页面的变量名称和值 2022-01-01
- 我什么时候应该使用 GC.SuppressFinalize()? 2022-01-01
- 使用 SED 在 XML 标签之间提取值 2022-01-01
- C# - 将浮点数转换为整数...并根据余数更改整数 2022-01-01
- 从 VB6 迁移到 .NET/.NET Core 的最佳策略或工具 2022-01-01
- 如何使用OpenXML SDK将Excel转换为CSV? 2022-01-01
- 创建属性设置器委托 2022-01-01