首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 調用百度 IP 定位 API 獲取地理位置實戰

     編輯:Java 程式設計入門

需求場景

根據用戶 IP 地址快速獲取地理位置(國家、省份、城市),適用於個性化推薦、風控、日誌分析等場景。

技術實現

依賴

  • JDK 內建 java.net.URL、InputStream
  • 第三方 org.json:json 解析 JSON 響應

核心工具類

public class GetPlaceByIp {
    private static String readAll(Reader rd) throws IOException {
        StringBuilder sb = new StringBuilder();
        int cp;
        while ((cp = rd.read()) != -1) sb.append((char) cp);
        return sb.toString();
    }

    public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException {
        try (InputStream is = new URL(url).openStream();
             BufferedReader rd = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8))) {
            return new JSONObject(readAll(rd));
        }
    }

    public static void main(String[] args) throws Exception {
        // 百度 IP 定位 API,ak 需申請,ip 為目標 IP
        String apiUrl = "https://api.map.baidu.com/location/ip?ak=YOUR_AK&ip=202.198.16.3";
        JSONObject json = readJsonFromUrl(apiUrl);
        System.out.println(json);
        System.out.println("地址:" + json.getJSONObject("content").getString("address"));
    }
}

關鍵點說明

  • finally 塊確保流關閉,即使 return 也會執行
  • 百度 API 返回結構:{status:0, content:{address:"...", ...}}
  • 生產環境建議:連接池、超時設置、異步調用、緩存結果、HTTPS

替代方案對比

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
方案優點缺點
百度/高德/騰訊 IP API免費額度大、維護簡單依賴第三方、準確度受限
本地 GeoIP 庫離線、低延遲、可控需定期更新數據、佔用磁盤
自建服務完全可控開發維護成本高