各大网站都提供根据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提交调用抓取

最新文章

  1. ASP.NET-DataList控件-DataList嵌套
  2. 行列式(三):n阶行列式
  3. A标签使用javascript:伪协议
  4. server2008服务器iis设置的一些经验
  5. Delphi Register
  6. Android假退出不是流氓行为
  7. Android学习笔记--Handler用法总结
  8. Android学习笔记--远程服务的使用
  9. SQL Server 2008性能故障排查(二)——CPU
  10. php websocket聊天室
  11. angular双向数据绑定
  12. Catch him
  13. oracle ebs form开发总结
  14. [COGS 2524]__完全平方数
  15. Linux性能优化实战:系统的swap变高(08)
  16. MySQL锁问题,事务隔离级别
  17. 业务开发(五)—— Java代码
  18. C#设计模式(9)——装饰者模式(Decorator Pattern)(转)
  19. Pandas 库中excel的读写方法介绍
  20. Kruskal算法:最小生成树

热门文章

  1. 搭建springmvc的步骤
  2. ASP.NET中的Image和ImageButton控件
  3. Excel应该这么玩——0、初衷:用IT方法玩Excel
  4. 【实践】纯jquery实现图片滑动无缝轮播,带左右按钮及控制按钮
  5. toStirng()与Object.prototype.toString.call()方法浅谈
  6. sql server中如何查看执行效率不高的语句
  7. Android DiskLruCache 源码解析 硬盘缓存的绝佳方案
  8. mysql 查询日志
  9. 【树莓派】使用树莓派制作img镜像(二)
  10. jquery总结01-基本概念和选择器