2012-12-31 7 views

Odpowiedz

5

Powinieneś użyć następnie odłogiem API do uzyskania lokalizacji przy użyciu ip.

Ip2Location API

+0

niestety, po tylu latach, nic pod tym linkiem działa – SREE

2

Istnieje kilka web-services, który zapewnia Ci szerokości i długości geograficznej wartość z adresu IP.

jeden taki jest api.ipinfodb.com

ex można szerokości i długości, wysyłając prośbę jak

http://api.ipinfodb.com/v3/ip-city/?key=<your_api_key> 
       &ip=74.125.45.100&format=json 

ten zwraca dane w formacie JSON i można dostać odpowiedź w XML, ustawiając format = xml. (Aby uzyskać klucz API, musisz się zarejestrować).

lub można pobrać bazę danych z linku this i this.

możesz pobierać zestawy danych, ale musisz je stale aktualizować.

+0

próbowałem uzyskać klucz API dla tej witryny, ale bezskutecznie. Ciągle prosi o podanie mojej lokalizacji, nawet jeśli ją podałem. Czy chcesz udostępnić swój klucz? –

1

używam this dostać ip, kraj i miasto urządzeniu

przetestować można użyć RESTCLIENT, firefox addon do wykonywania żądań HTTP.

prostu skopiować https://addons.mozilla.org/en-us/firefox/addon/restclient/ ten URL i wykonaj test w RESTCLIENT lub tuż obok w pasku adresu przeglądarki

Nadzieja pomaga to!

+0

Dobre znalezisko. Bardzo proste użycie tego linku: http://api.hostip.info/get_json.php –

3

Zamówienie POST Google Maps Geolocation API

Próbka:

https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY 

odpowiedź próbki:

{ 
    "location": { 
    "lat": 51.0, 
    "lng": -0.1 
    }, 
    "accuracy": 1200.4 
} 

Ograniczenia:

Użytkownicy standardowego API:

2500 darmowych zapytań dziennie 10 zapytań na sekundę, dla każdego użytkownika Włącz pay-as-you-go rozliczeń do odblokowania wyższych kwot:

$ 0,50 USD/1000 dodatkowe pytania , do 100 000 dziennie.

MORE

0

Można użyć freegeoip.net.

To bezpłatna usługa typu open source. Możesz skorzystać z usługi bezpośrednio lub uruchomić ją na swoim osobistym serwerze. Można go również łatwo wdrożyć w Heroku.

Aby uzyskać lokalizację IP wystarczy użyć OkHttp aby wysłać żądanie HTTP/HTTPS:

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()); 
      } 
     }); 
    } 
}); 

a odpowiedź będzie wyglądać mniej więcej tak:

{ 
    "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 
} 
Powiązane problemy