View Categories

Display Visitor’s GeoLocation Using Web Service in C#

5 min read

Geolocation is a great way to put relevant content to your web visitors and it is a technology that can be used in almost any application you can think of.

In this tutorial, we use the IP2Location.io IP Geolocation API to lookup geolocation information from the visitor’s IP address. Instead of loading the full database, you can also lookup IP address via our API.

Below are the sample codes written in C# to query and display user’s geolocation information.

using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace TestASPDotNetIP2LocationIOAPICSharp
{
	public partial class WebForm1 : System.Web.UI.Page
	{
		protected void Page_Load(object sender, EventArgs e)
		{
			WebAPI();
		}

		private void WebAPI()
		{
			string strQuery;
			string IPAddress = HttpContext.Current.Request.UserHostAddress;
			string Key = "YOUR_API_KEY";
			WebRequest HttpWReq;
			System.Net.WebResponse HttpWResp;

			strQuery = "https://api.ip2location.io/?" + "ip=" + IPAddress + "&key=" + Key + "&format=json";
			HttpWReq = WebRequest.Create(strQuery);
			HttpWReq.Method = "GET";
			try
			{
				HttpWResp = HttpWReq.GetResponse();
				System.IO.StreamReader reader = new System.IO.StreamReader(HttpWResp.GetResponseStream());
				string content = reader.ReadToEnd();

				JObject results = JsonConvert.DeserializeObject<JObject>(content);
				Response.Write("ip: " + results["ip"].ToString() + "<br>n");
				Response.Write("country_code: " + results["country_code"].ToString() + "<br>n");
				Response.Write("country_name: " + results["country_name"].ToString() + "<br>n");
				Response.Write("region_name: " + results["region_name"].ToString() + "<br>n");
				Response.Write("city_name: " + results["city_name"].ToString() + "<br>n");
				Response.Write("latitude: " + results["latitude"].ToString() + "<br>n");
				Response.Write("longitude: " + results["longitude"].ToString() + "<br>n");
				Response.Write("zip_code: " + results["zip_code"].ToString() + "<br>n");
				Response.Write("time_zone: " + results["time_zone"].ToString() + "<br>n");
				Response.Write("asn: " + results["asn"].ToString() + "<br>n");
				Response.Write("as: " + results["as"].ToString() + "<br>n");
				if (results["isp"] != null)
					Response.Write("isp: " + results["isp"].ToString() + "<br>n");
				if (results["domain"] != null)
					Response.Write("domain: " + results["domain"].ToString() + "<br>n");
				if (results["net_speed"] != null)
					Response.Write("net_speed: " + results["net_speed"].ToString() + "<br>n");
				if (results["idd_code"] != null)
					Response.Write("idd_code: " + results["idd_code"].ToString() + "<br>n");
				if (results["area_code"] != null)
					Response.Write("area_code: " + results["area_code"].ToString() + "<br>n");
				if (results["weather_station_code"] != null)
					Response.Write("weather_station_code: " + results["weather_station_code"].ToString() + "<br>n");
				if (results["weather_station_name"] != null)
					Response.Write("weather_station_name: " + results["weather_station_name"].ToString() + "<br>n");
				if (results["mcc"] != null)
					Response.Write("mcc: " + results["mcc"].ToString() + "<br>n");
				if (results["mnc"] != null)
					Response.Write("mnc: " + results["mnc"].ToString() + "<br>n");
				if (results["mobile_brand"] != null)
					Response.Write("mobile_brand: " + results["mobile_brand"].ToString() + "<br>n");
				if (results["elevation"] != null)
					Response.Write("elevation: " + results["elevation"].ToString() + "<br>n");
				if (results["usage_type"] != null)
					Response.Write("usage_type: " + results["usage_type"].ToString() + "<br>n");
				if (results["address_type"] != null)
					Response.Write("address_type: " + results["address_type"].ToString() + "<br>n");
				if (results["district"] != null)
					Response.Write("district: " + results["district"].ToString() + "<br>n");
				if (results["ads_category"] != null)
					Response.Write("ads_category: " + results["ads_category"].ToString() + "<br>n");
				if (results["ads_category_name"] != null)
					Response.Write("ads_category_name: " + results["ads_category_name"].ToString() + "<br>n");
				Response.Write("is_proxy: " + results["is_proxy"].ToString() + "<br>n");

				if (results["continent"] != null)
				{
					var Continent = results["continent"];
					Response.Write("continent => name: " + Continent["name"].ToString() + "<br>n");
					Response.Write("continent => code: " + Continent["code"].ToString() + "<br>n");
					Response.Write("continent => hemisphere: " + Continent["hemisphere"].ToString() + "<br>n");
					Response.Write("continent => translation => lang: " + Continent["translation"]["lang"].ToString() + "<br>n");
					Response.Write("continent => translation => value: " + Continent["translation"]["value"].ToString() + "<br>n");
				}

				if (results["country"] != null)
				{
					var Country = results["country"];
					Response.Write("country => name: " + Country["name"].ToString() + "<br>n");
					Response.Write("country => alpha3_code: " + Country["alpha3_code"].ToString() + "<br>n");
					Response.Write("country => numeric_code: " + Country["numeric_code"].ToString() + "<br>n");
					Response.Write("country => demonym: " + Country["demonym"].ToString() + "<br>n");
					Response.Write("country => flag: " + Country["flag"].ToString() + "<br>n");
					Response.Write("country => capital: " + Country["capital"].ToString() + "<br>n");
					Response.Write("country => total_area: " + Country["total_area"].ToString() + "<br>n");
					Response.Write("country => population: " + Country["population"].ToString() + "<br>n");
					Response.Write("country => tld: " + Country["tld"].ToString() + "<br>n");
					Response.Write("country => currency => code: " + Country["currency"]["code"].ToString() + "<br>n");
					Response.Write("country => currency => name: " + Country["currency"]["name"].ToString() + "<br>n");
					Response.Write("country => currency => symbol: " + Country["currency"]["symbol"].ToString() + "<br>n");
					Response.Write("country => language => code: " + Country["language"]["code"].ToString() + "<br>n");
					Response.Write("country => language => name: " + Country["language"]["name"].ToString() + "<br>n");
					Response.Write("country => translation => lang: " + Country["translation"]["lang"].ToString() + "<br>n");
					Response.Write("country => translation => value: " + Country["translation"]["value"].ToString() + "<br>n");
				}

				if (results["region"] != null)
				{
					var Region = results["region"];
					Response.Write("region => name: " + Region["name"].ToString() + "<br>n");
					Response.Write("region => code: " + Region["code"].ToString() + "<br>n");
					Response.Write("region => translation => lang: " + Region["translation"]["lang"].ToString() + "<br>n");
					Response.Write("region => translation => value: " + Region["translation"]["value"].ToString() + "<br>n");
				}

				if (results["city"] != null)
				{
					var City = results["city"];
					Response.Write("city => name: " + City["name"].ToString() + "<br>n");
					Response.Write("city => translation => lang: " + City["translation"]["lang"].ToString() + "<br>n");
					Response.Write("city => translation => value: " + City["translation"]["value"].ToString() + "<br>n");
				}

				if (results["time_zone_info"] != null)
				{
					var TimeZone = results["time_zone_info"];
					Response.Write("time_zone_info => olson: " + TimeZone["olson"].ToString() + "<br>n");
					Response.Write("time_zone_info => current_time: " + TimeZone["current_time"].ToString() + "<br>n");
					Response.Write("time_zone_info => gmt_offset: " + TimeZone["gmt_offset"].ToString() + "<br>n");
					Response.Write("time_zone_info => is_dst: " + TimeZone["is_dst"].ToString() + "<br>n");
					Response.Write("time_zone_info => sunrise: " + TimeZone["sunrise"].ToString() + "<br>n");
					Response.Write("time_zone_info => sunset: " + TimeZone["sunset"].ToString() + "<br>n");
				}

				if (results["geotargeting"] != null)
				{
					var GeoTarget = results["geotargeting"];
					Response.Write("geotargeting => metro: " + GeoTarget["metro"].ToString() + "<br>n");
				}

				if (results["proxy"] != null)
				{
					var Proxy = results["proxy"];
					Response.Write("proxy => last_seen: " + Proxy["last_seen"].ToString() + "<br>n");
					Response.Write("proxy => proxy_type: " + Proxy["proxy_type"].ToString() + "<br>n");
					Response.Write("proxy => threat: " + Proxy["threat"].ToString() + "<br>n");
					Response.Write("proxy => provider: " + Proxy["provider"].ToString() + "<br>n");
					Response.Write("proxy => is_vpn: " + Proxy["is_vpn"].ToString() + "<br>n");
					Response.Write("proxy => is_tor: " + Proxy["is_tor"].ToString() + "<br>n");
					Response.Write("proxy => is_data_center: " + Proxy["is_data_center"].ToString() + "<br>n");
					Response.Write("proxy => is_public_proxy: " + Proxy["is_public_proxy"].ToString() + "<br>n");
					Response.Write("proxy => is_web_proxy: " + Proxy["is_web_proxy"].ToString() + "<br>n");
					Response.Write("proxy => is_web_crawler: " + Proxy["is_web_crawler"].ToString() + "<br>n");
					Response.Write("proxy => is_residential_proxy: " + Proxy["is_residential_proxy"].ToString() + "<br>n");
					Response.Write("proxy => is_spammer: " + Proxy["is_spammer"].ToString() + "<br>n");
					Response.Write("proxy => is_scanner: " + Proxy["is_scanner"].ToString() + "<br>n");
					Response.Write("proxy => is_botnet: " + Proxy["is_botnet"].ToString() + "<br>n");
					Response.Write("proxy => is_consumer_privacy_network: " + Proxy["is_consumer_privacy_network"].ToString() + "<br>n");
					Response.Write("proxy => is_enterprise_private_network: " + Proxy["is_enterprise_private_network"].ToString() + "<br>n");
				}
			}
			catch (Exception ex)
			{
				Response.Write(ex.Message);
			}
		}

	}
}
Scroll to Top