Feedback

C# - GeoLocation einer IP Adresse ermitteln

Veröffentlicht von am 24.07.2010
(0 Bewertungen)
Der Dienst ipinfodb.com bietet eine kostenlose Lokalisierung der übergebenen IP Adresse an. Dieser Snippet zeigt, wie die Informationen mit .NET abgerufen werden können. Exceptionhandling ist nicht implementiert.
GFU-Schulungen  [Anzeige]

C# Komplett

Sie kennen sich in objektorientierter Programmierung aus. Sie schreiben C++ oder Java? Und nun stehen Sie vor der Aufgabe, in C# Anwendungen zu erstellen. Das C# Komplett-Seminar verschafft Ihnen umfassende Programmierkenntnisse in dieser Sprache. Nach der Schulung entwickeln Sie selbständig Anwendungen mit C#. Sie kennen die Datentypen und Klassenbibliotheken der objektorientierten Programmiersprache C#. Der Komplettkurs setzt bei den Grundlagen von C# ein. Sie arbeiten mit Variablen und konvertieren Typen. Multithreading, Delegates, Generics sind nach dem Seminar für Sie kein Geheimnis mehr.

Visual Studio Team Foundation Server 2017/2015 (TFS) für Projektmitglieder - Kompakt

Nach Teilnahme an dieser Schulung sind Ihnen die Grundlagen von ALM geläufig. Sie planen und steuern Projekte effizient mit dem Visual Studio Team Foundation Server.

using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using System.Xml.Linq;
 
namespace IpLoc
{
    internal class IpInfo
    {
        public IpInformation GetIpInformation(string ip)
        {
            WebClient webClient = new WebClient();
            webClient.Encoding = Encoding.UTF8;
            XDocument xDocument = XDocument.Parse(webClient.DownloadString(string.Format("http://ipinfodb.com/ip_query.php?ip={0}&timezone=false", ip)));
            IpInformation ipInformation = new IpInformation();
 
            ipInformation.Ip = xDocument.Elements().Select(a => a.Element("Ip").Value).FirstOrDefault();
            ipInformation.CountryCode = xDocument.Elements().Select(a => a.Element("CountryCode").Value).FirstOrDefault();
            ipInformation.CountryName = HttpUtility.HtmlDecode(xDocument.Elements().Select(a => a.Element("CountryName").Value).FirstOrDefault());
            ipInformation.RegionCode = xDocument.Elements().Select(a => a.Element("RegionCode").Value).FirstOrDefault();
            ipInformation.RegionName = HttpUtility.HtmlDecode(xDocument.Elements().Select(a => a.Element("RegionName").Value).FirstOrDefault());
            ipInformation.City = HttpUtility.HtmlDecode(xDocument.Elements().Select(a => a.Element("City").Value).FirstOrDefault());
            ipInformation.ZipPostalCode = xDocument.Elements().Select(a => a.Element("ZipPostalCode").Value).FirstOrDefault();
            ipInformation.Latitude = xDocument.Elements().Select(a => a.Element("Latitude").Value).FirstOrDefault();
            ipInformation.Longitude = xDocument.Elements().Select(a => a.Element("Longitude").Value).FirstOrDefault();
 
            return ipInformation;
        }
 
        #region Nested type: IpInformation
 
        public class IpInformation
        {
            public string Ip { get; set; }
            public string CountryCode { get; set; }
            public string CountryName { get; set; }
            public string RegionCode { get; set; }
            public string RegionName { get; set; }
            public string City { get; set; }
            public string ZipPostalCode { get; set; }
            public string Latitude { get; set; }
            public string Longitude { get; set; }
        }
 
        #endregion
    }
}

Abgelegt unter GeoLocation, IP, IP Adresse, Longitude, Latitude.

3 Kommentare zum Snippet

ak34141 schrieb am 17.04.2012:
Eine kleine Anpassung an die neuen Gegebenheiten bei ipinfodb.com:


public class IpInformation
{
public string Ip { get; set; }
public string CountryCode { get; set; }
public string CountryName { get; set; }
public string RegionName { get; set; }
public string City { get; set; }
public string ZipPostalCode { get; set; }
public string Latitude { get; set; }
public string Longitude { get; set; }
public string TimeZone { get; set; }
}


public IpInformation GetIpInformation(string ip)
{
WebClient webClient = new WebClient();
webClient.Encoding = Encoding.UTF8;
string test = webClient.DownloadString(string.Format("http://api.ipinfodb.com/v3/ip-city/?key=<your_key>&ip={0}&format=xml", ip));

XDocument xDocument = XDocument.Parse(test);
IpInformation ipInformation = new IpInformation();
if (xDocument.Elements().Select(a => a.Element("statusCode").Value).FirstOrDefault() == "OK")
{
ipInformation.Ip = xDocument.Elements().Select(a => a.Element("ipAddress").Value).FirstOrDefault();
ipInformation.CountryCode = xDocument.Elements().Select(a => a.Element("countryCode").Value).FirstOrDefault();
ipInformation.CountryName = xDocument.Elements().Select(a => a.Element("countryName").Value).FirstOrDefault();
ipInformation.RegionName = xDocument.Elements().Select(a => a.Element("regionName").Value).FirstOrDefault();
ipInformation.City = xDocument.Elements().Select(a => a.Element("cityName").Value).FirstOrDefault();
ipInformation.ZipPostalCode = xDocument.Elements().Select(a => a.Element("zipCode").Value).FirstOrDefault();
ipInformation.Latitude = xDocument.Elements().Select(a => a.Element("latitude").Value).FirstOrDefault();
ipInformation.Longitude = xDocument.Elements().Select(a => a.Element("longitude").Value).FirstOrDefault();
ipInformation.TimeZone = xDocument.Elements().Select(a => a.Element("timeZone").Value).FirstOrDefault();
}
return ipInformation;
}
Thomas Roskop schrieb am 07.09.2015:
Es scheint, als habe der Anbieter seine API-Struktur verändert.
Hier ist die Dokumentation zu der API http://www.ipinfodb.com/ip_location_api.php
Neu ist:

- Es ist ein Schlüssel (API-Key) notwendig
- Es werden auch https-Anfragen unterstützt

Für die Benutzung soltle man sich das unterere Beispiel auf der Seite (ASP-Script) anschauen.

~Thomas
Jan Welker schrieb am 07.09.2015:
Danke für den Hinweis Thomas!
 

Logge dich ein, um hier zu kommentieren!