0

IPアドレスを対応する番号に変換しています。ここで、場所の詳細、つまり、longとlat、タイムゾーンなどを知りたいです。Javaで可能ですか。データベースに外部jarを使用する必要がありますか?

4

4 に答える 4

2

IPアドレス自体には位置情報がありません。ただし、このマッピングを持つデータベース/サービスは多数存在します。

さまざまなオプションについては、このブログエントリを参照してください。このために接続するAPIとデータベースは多数あり、リモートルックアップを回避するためにそのような情報をローカルにダウンロードするオプションがあります。

于 2012-07-20T10:55:22.227 に答える
1

したがって、他の人が正しく指摘しているように、IPアドレスには場所に関するこの「メタデータ」は含まれていません。この情報を取得するためにサードパーティに依存するか、この情報を自分で取得するか、またはそれなしで行く必要があります。その情報をスクレイプするためのライブラリを作成することは、Javaで可能であるはずです。

于 2012-07-20T11:14:44.987 に答える
1
  ipAddress = request.getRemoteAddr();
  GeoLocation gl = new GeoLocation();
  gl.GetGeoLocationByIP(ipAddress);

String country = gl.Country;

参照

于 2013-05-08T06:33:38.120 に答える
1

IPアドレスから場所を取得するには、IPテーブルを定期的に更新するIPデータベースを購入する必要があります。

ただし、必要に応じて、リクエストヘッダーから都市、地域、国、経度、緯度などの場所の詳細を取得できます。

GAEユーザーのみが利用できます。

詳細については、 GAEリリースノート を参照してください

public static HashMap<String, Object> getLocationDetails(HttpServletRequest request)
{
    HashMap<String, Object> locationMap =   null; 
    String country  =   "",city="",region="",latitude="",longitude="",temp="",state="",title="",address="",zip="";
    boolean primary =   true;
    try
    {
        locationMap = new HashMap<String, Object>();
        country     =   request.getHeader("X-AppEngine-Country"); 
        region      =   request.getHeader("X-AppEngine-Region");
        city        =   request.getHeader("X-AppEngine-City");
        temp        =   request.getHeader("X-AppEngine-CityLatLong");
        latitude    =   (temp.split(","))[0];
        longitude   =   (temp.split(","))[1];
        log.info("country>>"+country+"region>>"+region+"city>>"+city+"temp>>"+temp+"latitude>>"+latitude+"longitude>>"+longitude);

        locationMap.put("city"      , city);
        locationMap.put("state"     , region);
        locationMap.put("country"   , country);
        locationMap.put("latitude"  , latitude);
        locationMap.put("longitude" , longitude);
        log.info("locationMap==>"+locationMap);
    }catch (Exception e) 
    {
        log.log(Level.SEVERE,"Exception while getting location"+e.getMessage(),e);
    }
    return locationMap;
}
于 2013-08-03T08:22:42.643 に答える