private static string GetOwnPublicIP() { try { var html = new WebClient().DownloadString( "http://checkip.dyndns.com/"); var ipStart = html.IndexOf(": ", StringComparison.OrdinalIgnoreCase) + 2; return html.Substring(ipStart, html.IndexOf("</", ipStart, StringComparison.OrdinalIgnoreCase) - ipStart).Trim(); } catch (System.Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); return string.Empty; } } public static LocationResponseData GetOwnLocation() { try { string url = string.Format("http://api.ipinfodb.com/v3/ip-city/?key={0}&ip={1}&format={2}", "1ec2f16b88b85a99145af5671fe45e641f051781843dc4dba714ccb09910e52f", GetOwnPublicIP(),"json"); string response = WebUtilities.GethttpRequest(url); if (response == null) return null; return JsonUtilities.JsonToObj<LocationResponseData>(response); } catch (System.Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); return null; } } public class LocationResponseData { public string statusCode { get; set; } public string statusMessage { get; set; } public string ipAddress { get; set; } public string countryCode { get; set; } public string countryName { get; set; } public string regionName { get; set; } public string cityName { get; set; } public string zipCode { get; set; } public double latitude { get; set; } public double longitude { get; set; } public string timeZone { get; set; } }