根据ip获取用户地理位置
2024-08-28 23:35:22
各大网站都提供根据ip获取用户地理位置信息,这里以新浪的接口为例子
接口地址为:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=218.18.171.146
代码:
#region 根据ip获取地点
/// 获取Ip归属地
/// </summary>
/// <param name="ip">ip</param>
/// <returns>归属地</returns>
public static string GetIpAddress(string ip)
{
JavaScriptSerializer Jss = new JavaScriptSerializer();
//http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=218.18.171.146 调用新浪的接口
//var remote_ip_info = {"ret":1,"start":-1,"end":-1,"country":"\u4e2d\u56fd","province":"\u5e7f\u4e1c","city":"\u6df1\u5733","district":"","isp":"","type":"","desc":""};
string address = string.Empty;
try
{
string reText = WebRequestPostOrGet("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip="+ip, "");
reText = reText.Split('=')[].Split(';')[].Trim();
Dictionary<string, object> DicText = (Dictionary<string, object>)Jss.DeserializeObject(reText);
address = DicText["city"].ToString();
}
catch { }
return address;
}
#endregion
其中WebRequestPostOrGet方法:
#region Post/Get提交调用抓取
/// <summary>
/// Post/get 提交调用抓取
/// </summary>
/// <param name="url">提交地址</param>
/// <param name="param">参数</param>
/// <returns>string</returns>
public static string WebRequestPostOrGet(string sUrl, string sParam)
{
byte[] bt = System.Text.Encoding.UTF8.GetBytes(sParam); Uri uriurl = new Uri(sUrl);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uriurl);//HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url + (url.IndexOf("?") > -1 ? "" : "?") + param);
req.Method = "Post";
req.Timeout = * ;
req.ContentType = "application/x-www-form-urlencoded;";
req.ContentLength = bt.Length; using (Stream reqStream = req.GetRequestStream())//using 使用可以释放using段内的内存
{
reqStream.Write(bt, , bt.Length);
reqStream.Flush();
}
try
{
using (WebResponse res = req.GetResponse())
{
//在这里对接收到的页面内容进行处理 Stream resStream = res.GetResponseStream(); StreamReader resStreamReader = new StreamReader(resStream, System.Text.Encoding.UTF8); string resLine; System.Text.StringBuilder resStringBuilder = new System.Text.StringBuilder(); while ((resLine = resStreamReader.ReadLine()) != null)
{
resStringBuilder.Append(resLine + System.Environment.NewLine);
} resStream.Close();
resStreamReader.Close(); return resStringBuilder.ToString();
}
}
catch (Exception ex)
{
return ex.Message;//url错误时候回报错
}
}
#endregion Post/Get提交调用抓取
最新文章
- ASP.NET-DataList控件-DataList嵌套
- 行列式(三):n阶行列式
- A标签使用javascript:伪协议
- server2008服务器iis设置的一些经验
- Delphi Register
- Android假退出不是流氓行为
- Android学习笔记--Handler用法总结
- Android学习笔记--远程服务的使用
- SQL Server 2008性能故障排查(二)——CPU
- php websocket聊天室
- angular双向数据绑定
- Catch him
- oracle ebs form开发总结
- [COGS 2524]__完全平方数
- Linux性能优化实战:系统的swap变高(08)
- MySQL锁问题,事务隔离级别
- 业务开发(五)—— Java代码
- C#设计模式(9)——装饰者模式(Decorator Pattern)(转)
- Pandas 库中excel的读写方法介绍
- Kruskal算法:最小生成树
热门文章
- 搭建springmvc的步骤
- ASP.NET中的Image和ImageButton控件
- Excel应该这么玩——0、初衷:用IT方法玩Excel
- 【实践】纯jquery实现图片滑动无缝轮播,带左右按钮及控制按钮
- toStirng()与Object.prototype.toString.call()方法浅谈
- sql server中如何查看执行效率不高的语句
- Android DiskLruCache 源码解析 硬盘缓存的绝佳方案
- mysql 查询日志
- 【树莓派】使用树莓派制作img镜像(二)
- jquery总结01-基本概念和选择器