【ASP.NET进阶】根据IP地址返回对应位置信息

王朝学院·作者佚名  2016-08-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

其实就是使用了百度的ip库的功能接口,然后处理下就行了,效果图如下:

[flash=500,400]http://s1.knowsky.com/20160211/wyxfazu4vve12.png[/flash]

准备工作:

1.注册成为开度开发者,创建应用获得百度API调用的AK秘钥,百度开发中心地址:http://developer.baidu.com/

2.API 地址:http://developer.baidu.com/map/index.php?title=webapi/ip-api#.E4.BD.BF.E7.94.A8.E6.96.B9.E6.B3.95

3.准备开发咯,步骤如下:

(1)获取客户端IP

///<summary>获取客户端IP地址(无视代理)</summary>///<returns>若失败则返回回送地址</returns>publicstaticstringGetHostAddress()

{stringuserHostAddress =HttpContext.Current.Request.UserHostAddress;if(string.IsNullOrEmpty(userHostAddress))

{

userHostAddress= HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

}//最后判断获取是否成功,并检查IP地址的格式(检查其格式非常重要)if(!string.IsNullOrEmpty(userHostAddress) &&IsIP(userHostAddress))

{returnuserHostAddress;

}return"127.0.0.1";

}///<summary>///检查IP地址格式///</summary>///<param name="ip"></param>///<returns></returns>publicstaticboolIsIP(stringip)

{returnSystem.Text.RegularExPRessions.Regex.IsMatch(ip,@"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$");

(2)获取编码服务地址

privateconststringTHE_KEY ="***************";//你的AK密钥///<summary>返回UTF-8编码服务地址</summary>///<returns>服务地址</returns>publicstringGetPostUrl(stringtheIP)

{stringpostUrl ="http://api.map.baidu.com/location/ip?ak="+ THE_KEY +"&ip="+ theIP +"&coor=bd09ll";returnpostUrl;

}

(3)通过服务地址,得到地址解析结果

///<summary>返回结果(地址解析的结果)</summary>publicstaticstringGetInfoByUrl(stringurl)

{//调用时只需要把拼成的URL传给该函数即可。判断返回值即可stringstrRet =null;if(url ==null|| url.Trim().ToString() =="")

{returnstrRet;

}stringtargeturl =url.Trim().ToString();try{

HttpWebRequest hr=(HttpWebRequest)WebRequest.Create(targeturl);

hr.UserAgent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";

hr.Method="GET";

hr.Timeout=30*60*1000;

WebResponse hs=hr.GetResponse();

Stream sr=hs.GetResponseStream();

StreamReader ser=newStreamReader(sr, Encoding.Default);

strRet=ser.ReadToEnd();

}catch(Exception ex)

{

strRet=null;

}returnstrRet;

}

(4)最后简单的调用上面的方法,然后转换下字符串中的转义字符

stringtheIP =YMethod.GetHostAddress();stringmsg =YMethod.GetInfoByUrl(GetPostUrl(theIP));

msg=System.Text.RegularExpressions.Regex.Unescape(msg);

Response.Write(msg);

测试地址:http://ycdoit.com/test/getiptoad.aspx

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航