最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • 基于JAVA的免费手机归属地接口查询

    1、开通接口

    手机归属地查询接口服务使用的聚合数据提供的免费接口,每天可以100次免费调用。可以通过https://www.juhe.cn/docs/api/id/11注册及开通。

    2、通过Java发起手机归属地查询

    package cn.juhe;
    
    import net.sf.JSON.jsONObject;
    
    import java.io.*;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.NIO.charset.StandardCharsets;
    import java.util.HashMap;
    import java.util.Map;
    
    public class MobileLocation {
        // 手机归属地查询接口地址
        public static String API_URL = "http://apis.juhe.cn/mobile/get";
        // 接口请求Key
        public static String API_KEY = "****************";
    
        public static void main(String[] args) {
            String mobile = "18912341234";
            queryMobileLocation(mobile);
        }
    
        
        public static void queryMobileLocation(String mobile)
        {
            Map<String, Object> params = new HashMap<>();//组合参数
            params.put("phone", mobile);
            params.put("key", API_KEY);
            String queryParams = urlencode(params);
    
            String response = doGet(API_URL, queryParams);
            try {
                JSONObject jsonObject = JSONObject.fromObject(response);
                int error_code = jsonObject.getInt("error_code");
                if (error_code == 0) {
                    System.out.println("调用接口成功");
    
                    JSONObject result = jsonObject.getJSONObject("result");
    
                    System.out.printf("省份:%s%n", result.getString("province"));
                    System.out.printf("城市:%s%n", result.getString("city"));
                    System.out.printf("区号:%s%n", result.getString("areacode"));
                    System.out.printf("邮编:%s%n", result.getString("zip"));
                    System.out.printf("运营商:%s%n", result.getString("company"));
    
                } else {
                    System.out.println("调用接口失败:" + jsonObject.getString("reason"));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        
        public static String doGet(String httpUrl, String queryParams) {
            HttpURLConnection connection = null;
            InputStream inputStream = null;
            BufferedReader bufferedReader = null;
            String result = null;// 返回结果字符串
            try {
                // 创建远程url连接对象
                URL url = new URL(new StringBuffer(httpUrl).append("?").append(queryParams).toString());
                // 通过远程url连接对象打开一个连接,强转成httpURLConnection类
                connection = (HttpURLConnection) url.openConnection();
                // 设置连接方式:get
                connection.setRequestMethod("GET");
                // 设置连接主机服务器的超时时间:15000毫秒
                connection.setConnectTimeout(5000);
                // 设置读取远程返回的数据时间:60000毫秒
                connection.setReadTimeout(6000);
                // 发送请求
                connection.connect();
                // 通过connection连接,获取输入流
                if (connection.getResponseCode() == 200) {
                    inputStream = connection.getInputStream();
                    // 封装输入流,并指定字符集
                    bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
                    // 存放数据
                    StringBuilder sbf = new StringBuilder();
                    String temp;
                    while ((temp = bufferedReader.readLine()) != null) {
                        sbf.append(temp);
                        sbf.append(System.getProperty("line.separator"));
                    }
                    result = sbf.toString();
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                // 关闭资源
                if (null != bufferedReader) {
                    try {
                        bufferedReader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (null != inputStream) {
                    try {
                        inputStream.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (connection != null) {
                    connection.disconnect();// 关闭远程连接
                }
            }
            return result;
        }
    
        
        public static String urlencode(Map<String, ?> data) {
            StringBuilder sb = new StringBuilder();
            for (Map.Entry<String, ?> i : data.entrySet()) {
                try {
                    sb.append(i.geTKEy()).append("=").append(URLEncoder.encode(i.getValue() + "", "UTF-8")).append("&");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
            }
            String result = sb.toString();
            result = result.substring(0, result.lastIndexOf("&"));
            return result;
        }
    }
    
    
    

    3、返回查询结果

    调用接口成功
    省份:江苏
    城市:常州
    区号:0519
    邮编:213000
    运营商:电信
    
    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » 基于JAVA的免费手机归属地接口查询
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 292稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情