• java根据ip地址获取详细地域信息的方法


    通过淘宝IP地址库获取IP位置(也可以使用新浪的)

    请求接口(GET):http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]

    响应信息:(json格式的)国家 、省(自治区或直辖市)、市(县)、运营商

    package com;
    
    import net.sf.json.JSONObject;
    
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    
    public class GetAddressByIp {
    
        public static void main(String[] args) {
            String resout = "";
            try{
                String str = getJsonContent("http://ip.taobao.com/service/getIpInfo.php?ip="+"162.128.125.6");
                System.out.println(str);
                JSONObject obj = JSONObject.fromObject(str);
                JSONObject obj2 =  (JSONObject) obj.get("data");
                String code = (String) obj.get("code");
                if(code.equals("0")){
                    resout =  obj2.get("country")+"--" +obj2.get("area")+"--" +obj2.get("city")+"--" +obj2.get("isp");
                }else{
                    resout =  "IP地址有误";
                }
            }catch(Exception e){
    
                e.printStackTrace();
                resout = "获取IP地址异常:"+e.getMessage();
            }
            System.out.println("result: " + resout);
        }
    
        public static String getJsonContent(String urlStr) {
            try
            {// 获取HttpURLConnection连接对象
                URL url = new URL(urlStr);
                HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
                // 设置连接属性
                httpConn.setConnectTimeout(3000);
                httpConn.setDoInput(true);
                httpConn.setRequestMethod("GET");
                // 获取相应码
                int respCode = httpConn.getResponseCode();
                if (respCode == 200)
                {
                    return ConvertStream2Json(httpConn.getInputStream());
                }
            }
            catch (MalformedURLException e)
            {
                e.printStackTrace();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return "";
        }
    
        private static String ConvertStream2Json(InputStream inputStream) {
            String jsonStr = "";
            // ByteArrayOutputStream相当于内存输出流
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len = 0;
            // 将输入流转移到内存输出流中
            try
            {
                while ((len = inputStream.read(buffer, 0, buffer.length)) != -1)
                {
                    out.write(buffer, 0, len);
                }
                // 将内存流转换为字符串
                jsonStr = new String(out.toByteArray());
            }
            catch (IOException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return jsonStr;
        }
    }

     返回的数据

    {
        "code": 0,
        "data": {
            "ip": "162.128.125.6",
            "country": "中国",
            "area": "",
            "region": "四川",
            "city": "成都",
            "county": "XX",
            "isp": "电信",
            "country_id": "CN",
            "area_id": "",
            "region_id": "510000",
            "city_id": "510100",
            "county_id": "xx",
            "isp_id": "100017"
        }
    }
  • 相关阅读:
    关于this的指向问题
    blued面经
    数美(sm)面经
    xue球 面经
    jquery中的$("#id")与document.getElementById("id")的区别
    如何知道iframe文件下载download完成
    前端linux基础
    Vue.js 初级面试题
    React 面试题
    从输入URL到页面加载的过程
  • 原文地址:https://www.cnblogs.com/james-roger/p/9316360.html
Copyright © 2020-2023  润新知