Ich entwickle eine Android-App. Ich möchte den Standort des Geräts anhand seiner IP-Adresse ermitteln. Wo soll ich anfangen? Die Links auf Google APIs sind nicht schlüssig genug. Vielen Dank.So ermitteln Sie den Standort des Geräts in Android mit der IP-Adresse
Antwort
Sie sollten dann folgende API verwenden, um den Standort mithilfe von IP zu erhalten.
Es gibt mehrere Web-Services, die liefert Ihnen Breite und Länge Wert von IP-Adresse.
eine solche ist api.ipinfodb.com
für ex, können Sie Breite und Länge auf Wunsch wie
http://api.ipinfodb.com/v3/ip-city/?key=<your_api_key>
&ip=74.125.45.100&format=json
sendet diese Daten im JSON-Format zurückgibt, und Sie können in bekommen Antwort XML durch Setzen von format = xml. (Sie müssen sich registrieren, um Ihren API-Schlüssel zu erhalten).
oder Sie können die Datenbank von this und this Link herunterladen.
Sie können Datensätze herunterladen, aber Sie müssen ständig aktualisieren.
Ich habe versucht, den API-Schlüssel für diese Website, aber ohne Erfolg. Es fragt weiter nach meinem Standort, auch wenn ich es zur Verfügung gestellt haben.Sind Sie bereit, Ihren Schlüssel zu teilen? –
Ich benutze this zu ip, Land und Stadt Gerät
zu testen, können Sie verwenden RESTCLIENT, die Firefox AddOn für die Herstellung von HTTP-Anfragen zu erhalten.
kopieren Sie einfach https://addons.mozilla.org/en-us/firefox/addon/restclient/ diese URL und Test in RESTCLIENT oder in der Vergangenheit nur in Browser-Adressleiste
hoffe, das hilft!
Gut finden. Sehr einfach mit diesem Link: http://api.hostip.info/get_json.php –
Kasse Google Maps Geolocation API
Probe POST:
https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY
Beispielantwort:
{
"location": {
"lat": 51.0,
"lng": -0.1
},
"accuracy": 1200.4
}
Grenzen:
Nutzer des Standard-API:
2.500 freie Anfragen pro Tag 10 Abfrage pro Sekunde pro Benutzer aktivieren Abrechnung Pay-as-you-go höhere Quoten zu entsperren:
$ 0.50 USD/1000 zusätzliche Abfragen bis zu 100.000 täglich.
können Sie freegeoip.net verwenden.
Es ist ein kostenloser Open-Source-Dienst. Sie können den Dienst direkt verwenden oder auf Ihrem persönlichen Server ausführen. Es kann auch ziemlich leicht zu Heroku eingesetzt werden.
Um die IP-Standort einfach verwenden OkHttp senden http/https Anfrage zu erhalten:
String url = "https://freegeoip.net/json/"
Request mRequest = new Request.Builder()
.url(url)
.build();
Context mContext // A UI context
new OkHttpClient().newCall(mRequest).enqueue(new Callback() {
Handler mainHandler = new Handler(mContext.getApplicationContext().getMainLooper());
@Override
public void onResponse(Call call, Response response) {
String responseBody = null;
try {
responseBody = response.body().string();
} catch (final IOException e) {
mainHandler.post(new Runnable() {
@Override
public void run() {
// handle error
}
});
}
final String finalResponseBody = responseBody;
mainHandler.post(new Runnable() {
@Override
public void run() {
// handle response body
try {
JSONObject locationObject = new JSONObject(finalResponseBody);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
@Override
public void onFailure(Call call, final IOException e) {
mainHandler.post(new Runnable() {
@Override
public void run() {
mNetworkListener.onNetworkError(e.getMessage());
}
});
}
});
Und die Antwort wird wie etwa wie folgt aussehen:
{
"ip": "192.30.253.113",
"country_code": "US",
"country_name": "United States",
"region_code": "CA",
"region_name": "California",
"city": "San Francisco",
"zip_code": "94107",
"time_zone": "America/Los_Angeles",
"latitude": 37.7697,
"longitude": -122.3933,
"metro_code": 807
}
Leider nach diesen Jahren nichts auf diesem Link funktioniert – SREE