IPに基づいてユーザの地理的位置を取得する
13297 ワード
各サイトはipに基づいてユーザーの地理的位置情報を取得することを提供しており、ここでは新浪のインタフェースを例に挙げる.
インタフェースアドレス:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=218.18.171.146
コード:
View Code
WebRequestPostOrGetメソッド:
View Code
インタフェースアドレス:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=218.18.171.146
コード:
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メソッド:
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