IPに基づいてユーザの地理的位置を取得する

13297 ワード

各サイトはipに基づいてユーザーの地理的位置情報を取得することを提供しており、ここでは新浪のインタフェースを例に挙げる.
インタフェースアドレス:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=218.18.171.146
コード:
根据ip获取用户地理位置
 1         #region   ip    

 2         ///   Ip   

 3         /// </summary>

 4         /// <param name="ip">ip</param>

 5         /// <returns>   </returns>

 6         public static string GetIpAddress(string ip)

 7         {

 8             JavaScriptSerializer Jss = new JavaScriptSerializer();

 9             //http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=218.18.171.146        

10             //var remote_ip_info = {"ret":1,"start":-1,"end":-1,"country":"\u4e2d\u56fd","province":"\u5e7f\u4e1c","city":"\u6df1\u5733","district":"","isp":"","type":"","desc":""};

11             string address = string.Empty;

12             try

13             {

14                 string reText = WebRequestPostOrGet("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip="+ip, "");

15                 reText = reText.Split('=')[1].Split(';')[0].Trim();

16                 Dictionary<string, object> DicText = (Dictionary<string, object>)Jss.DeserializeObject(reText);

17                 address = DicText["city"].ToString();

18             }

19             catch { }

20             return address;

21         }

22         #endregion

View Code
WebRequestPostOrGetメソッド:
根据ip获取用户地理位置
 1         #region Post/Get      

 2         /// <summary>

 3         /// Post/get       

 4         /// </summary>

 5         /// <param name="url">    </param>

 6         /// <param name="param">  </param>

 7         /// <returns>string</returns>

 8         public static string WebRequestPostOrGet(string sUrl, string sParam)

 9         {

10             byte[] bt = System.Text.Encoding.UTF8.GetBytes(sParam);

11 

12             Uri uriurl = new Uri(sUrl);

13             HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uriurl);//HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url + (url.IndexOf("?") > -1 ? "" : "?") + param);

14             req.Method = "Post";

15             req.Timeout = 120 * 1000;

16             req.ContentType = "application/x-www-form-urlencoded;";

17             req.ContentLength = bt.Length;

18 

19             using (Stream reqStream = req.GetRequestStream())//using       using     

20             {

21                 reqStream.Write(bt, 0, bt.Length);

22                 reqStream.Flush();

23             }

24             try

25             {

26                 using (WebResponse res = req.GetResponse())

27                 {

28                     //                 

29 

30                     Stream resStream = res.GetResponseStream();

31 

32                     StreamReader resStreamReader = new StreamReader(resStream, System.Text.Encoding.UTF8);

33 

34                     string resLine;

35 

36                     System.Text.StringBuilder resStringBuilder = new System.Text.StringBuilder();

37 

38                     while ((resLine = resStreamReader.ReadLine()) != null)

39                     {

40                         resStringBuilder.Append(resLine + System.Environment.NewLine);

41                     }

42 

43                     resStream.Close();

44                     resStreamReader.Close();

45 

46                     return resStringBuilder.ToString();

47                 }

48             }

49             catch (Exception ex)

50             {

51                 return ex.Message;//url       

52             }

53         }

54         #endregion Post/Get      

View Code