По ссылке Андрея, вот как построить запрос, этот код вернет HTML-файл со всеми деталями текущего IP, включая город;
String IP= "123.123.123.123";
URL link = new URL("http://www.geobytes.com/IpLocator.htm?GetLocation&template=php3.txt&IpAddress="+IP);
BufferedReader in = new BufferedReader(new InputStreamReader(link.openStream()));
String inputLine;
while ((inputLine = in.readLine()) != null){
System.out.println(inputLine);
}
in.close();
ОБНОВЛЕНИЕ, 23 мая 2013 г.
Предыдущий ответ в порядке, но это не вызов API, он читает HTML-страницу, которую я предоставил ранее, потому что я не нашел бесплатных API. Далее идет вызов API REST, который можно легко использовать и который вернет всю необходимую информацию, рекомендуется использовать этот:
String ip = "2.51.255.200";
URL url = new URL("http://freegeoip.net/csv/" + ip);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream is = connection.getInputStream();
int status = connection.getResponseCode();
if (status != 200) {
return null;
}
reader = new BufferedReader(new InputStreamReader(is));
for (String line; (line = reader.readLine()) != null;) {
//this API call will return something like:
"2.51.255.200","AE","United Arab Emirates","03","Dubai","Dubai","","x-coord","y-coord","",""
// you can extract whatever you want from it
}