0

我有一个名为 getIP() 的方法,它将客户端 ip 作为字符串返回。

如何使用此 IP 获取使用服务的客户端的位置。

这就是我显示客户端 IP 地址的方式。

string IP = getIP();
lblIPAddress.Text = "IP " + IP;

我如何包括客户的位置?

i.e. lblIPAddress.Text = "IP " + IP+ "location" ;)  
4

1 回答 1

2

您可以在下面找到一个非常简单的片段,我前段时间用来从该 API 的 XML 端点获取数据(我相信 API 没有更改,因此它仍然应该工作):

string city;
string country;
string countryCode;
decimal longitude;
decimal latitude;

XmlTextReader hostIPInfoReader = new XmlTextReader("http://api.hostip.info/?ip=" + IP);
while (hostIPInfoReader.Read()) {
    if (hostIPInfoReader.IsStartElement()) {
        if (hostIPInfoReader.Name == "gml:name")
            city = hostIPInfoReader.ReadString();

        if (hostIPInfoReader.Name == "countryName")
            country = hostIPInfoReader.ReadString();

        if (hostIPInfoReader.Name == "countryAbbrev")
            countryCode = hostIPInfoReader.ReadString();

        if (hostIPInfoReader.Name == "gml:coordinates") {
            string[] coordinates = hostIPInfoReader.ReadString().Split(new char[] { ',' });
            longitude = decimal.Parse(coordinates[0]);
            latitude = decimal.Parse(coordinates[1]);
        }
    }
}

这段代码当然可以改进,但我相信这对你来说是一个很好的起点。

于 2012-09-11T11:45:11.543 回答