Geo Location Data based on IP Address

Step for impelmentation:

1. Create class Location

public class Location

{

    public string IPAddress { get; set; }

    public string CountryName { get; set; }

    public string CountryCode { get; set; }

    public string CityName { get; set; }

    public string RegionName { get; set; }

    public string ZipCode { get; set; }

    public string Latitude { get; set; }

    public string Longitude { get; set; }

    public string TimeZone { get; set; }

}

2. Create Web form FetchGeoIPData_IPAddress.aspx
 

<asp:gridview id="gvLocation" runat="server" autogeneratecolumns="False" borderwidth="1px"

    backcolor="#DEBA84" cellpadding="3" cellspacing="2" borderstyle="None" bordercolor="#DEBA84">

<FooterStyle ForeColor="#8C4510" BackColor="#F7DFB5"></FooterStyle>

<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center"></PagerStyle>

<HeaderStyle ForeColor="White" Font-Bold="True" BackColor="#A55129"></HeaderStyle>

<Columns>

<asp:BoundField DataField="IPAddress" HeaderText="IP Address" ControlStyle-Width="200px"/>

<asp:BoundField DataField="CountryName" HeaderText="Country" />

<asp:BoundField DataField="CountryCode" HeaderText="Country Code" />

<asp:BoundField DataField="CityName" HeaderText="City" />

<asp:BoundField DataField="RegionName" HeaderText="Region" />

<asp:BoundField DataField="Latitude" HeaderText="Latitude" />

<asp:BoundField DataField="Longitude" HeaderText="Latitude" />

<asp:BoundField DataField="Timezone" HeaderText="Timezone" />

</Columns>

</asp:gridview>

3. Add the following namespace:
 

using System.Net;

using System.Collections.Generic;

using System.Web.Script.Serialization;

4. On the FetchGeoIPData_IPAddress.aspx.cs code-behind file

Add this code to btnGetGeoIPData_Click event
 

protected void btnGetGeoIPData_Click(object sender, EventArgs e)

{

        string ipAddress = txtIPAddress.Text;

        if (string.IsNullOrEmpty(ipAddress))

        {

            ipAddress = Request.ServerVariables["REMOTE_ADDR"];

        }

        string APIKey = "<Chane with Your API>";

        string url = string.Format("http://api.ipinfodb.com/v3/ip-city/?key={0}&ip={1}&format=json", APIKey, ipAddress);

        using (WebClient client = new WebClient())

        {

            string json = client.DownloadString(url);

            Location location = new JavaScriptSerializer().Deserialize<Location>(json);

            List<Location> locations = new List<Location>();

            locations.Add(location);

            gvLocation.DataSource = locations;

            gvLocation.DataBind();

      }

}