• 根据ip地址获取用户所在地


    java代码:

    package com.henu.controller;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.Reader;
    import java.net.URL;
    import java.nio.charset.Charset;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    /**
     * java根据url获取json对象
     * 
     * @author dxy
     * @since 2017-9-15 需要添加java-json.jar才能运行
     */
    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 {
            InputStream is = new URL(url).openStream();
            try {
                BufferedReader rd = new BufferedReader(new InputStreamReader(is,
                        Charset.forName("UTF-8")));
                String jsonText = readAll(rd);
                JSONObject json = new JSONObject(jsonText);
                return json;
            } finally {
                is.close();
                // System.out.println("同时 从这里也能看出 即便return了,仍然会执行finally的!");
            }
        }
    
        public static void main(String[] args) throws IOException, JSONException {
            // 这里调用百度的ip定位api服务 详见
            // http://api.map.baidu.com/lbsapi/cloud/ip-location-api.htm
            JSONObject json = readJsonFromUrl("http://api.map.baidu.com/location/ip?ak=F454f8a5efe5e577997931cc01de3974&ip=218.28.192.38");
            System.out.println(json.toString());
            System.out.println(((JSONObject) json.get("content")).get("address"));
        }
    }

    控制台输出:

    {"content":{"point":{"y":"4106269.36","x":"12651558.14"},"address":"河南省郑州市","address_detail":{"street":"","province":"河南省","city_code":268,"street_number":"","district":"","city":"郑州市"}},"status":0,"address":"CN|河南|郑州|None|UNICOM|0|0"}
    河南省郑州市
  • 相关阅读:
    P1828 [USACO3.2]香甜的黄油 Sweet Butter 题解
    P2058 海港 题解
    浅谈三分算法
    海伦公式的证明
    一年一回首
    再谈单调队列优化 & 背包九讲
    浅谈单调队列
    P1440 求m区间内的最小值 题解
    CF1374B Multiply by 2, divide by 6 题解
    组合数、杨辉三角与递推算法
  • 原文地址:https://www.cnblogs.com/henuyuxiang/p/7527007.html
Copyright © 2020-2023  润新知