Java百宝箱——实现ip地址、手机号、身份证号归属地查询

本文介绍了一个包含IP地址查询、天气预报、简繁体转换、身份证归属地及手机号码归属查询等功能的生活百宝箱Java应用程序。利用API接口实现了IP地址的精确查询,并通过身份证号直接查询归属地。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、功能界面

package com.company;

import com.alibaba.fastjson.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;

public class Main {

    //菜单
    public static String menu(){
        return "\t===========生活百宝箱===========\n" +
                "1、ip地址来源查询\n"+
                "2、天气预报查询\n"+
                "3、中文简繁体双向转换\n"+
                "4、身份证归属查询\n"+
                "5、手机号码归属查询\n" +
                "6、退出";
    }


    public static void main(String[] args) {
	// write your code here
        Scanner sc=new Scanner(System.in);
        int choice=-1;
        while (true){
            System.out.println(menu());
            System.out.print("请选择操作:");

            //用户输入数字选择操作,如果输入操作不符合规范,提示错误信息后让用户继续选择
            try {
                choice = sc.nextInt();
                //如果输入为6则退出
                if (choice==6)
                    break;
                else if(choice==1) {
                    System.out.print("请输入ip地址");
                    String ip=sc.next();
                    IpUtil.getIp(ip);
                    continue;
                }
                else if(choice==2){
                    System.out.print("请输入城市名称:");
                    String city=sc.next();
                    System.out.println(WeatherUtil.getWeather(city));
                    continue;
                }
                else if(choice==3){
                    jianfanConvert.jianfan();
                    continue;
                }
                else if(choice==4){
                    System.out.print("请输入身份证号:");
                    String cardNum=sc.next();
                    IdCardUtil.idCard(cardNum);
                    continue;
                }
                else if(choice==5){
                    System.out.print("请输入手机号:");
                    String phone=sc.next();
                    System.out.println(MobileLocationUtil.getMobileNoTrack(phone));
                }
            }
            catch (Exception e){
                continue;
            }
        }
    }
}

2、ip地址查询

通过java实现ip地址查询的方法主要就是通过接口的调用。
这里使用的地址为太平洋网提供的api,该api调用能精确到区县。
先看实现的效果
在这里插入图片描述
ip地址查询函数。接口返回的数据是json格式,所以这里应用的是阿里的fastjson的jar包来解析返回的数据。

package com.company;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import java.util.regex.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * @Author: jack
 */
public class IpUtil {

    public static void getIp(String ip) {

//     //接口连接地址
        String urlStr="http://whois.pconline.com.cn/ipJson.jsp?ip="+ip+"&json=true";
        //调用getResult获取接口返回值
        String result =  getResult(urlStr, "gbk");
        //解析json获取地址
        JSONObject jsonObject=JSONObject.parseObject(result);
        System.out.println(jsonObject.getString("addr"));

    }


    private static String getResult(String urlStr, String encoding) {
        URL url = null;
        HttpURLConnection connection = null;
        try {
            url = new URL(urlStr);
            connection = (HttpURLConnection) url.openConnection(); // 新建连接实例
            connection.setConnectTimeout(20000); // 设置连接超时时间,单位毫秒
            connection.setReadTimeout(20000); // 设置读取数据超时时间,单位毫秒
            connection.setDoOutput(true); // 是否打开输出流 true|false
            connection.setDoInput(true); // 是否打开输入流true|false
            connection.setRequestMethod("GET"); // 提交方法POST|GET
            connection.setUseCaches(false); // 是否缓存true|false
            connection.connect(); // 打开连接端口
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), encoding));// 往对端写完数据对端服务器返回数据// ,以BufferedReader流来读取

            String text="";
            String line = "";
            while ((line = reader.readLine()) != null) {
                text+=line+"\n";
            }
            reader.close();
            return text;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                connection.disconnect(); // 关闭连接
            }
        }
        return null;
    }

}

3、身份证归属地查询

身份证归属地查询这个的处理方法就相对简单粗暴了一些。直接将每个城市或者区县对应的编码找到之后读取,或者直接放进代码当中即可。比如下图这样
在这里插入图片描述
以下省略nnnn行代码…

4、更多查询

完整源码以及其他更多查询可以关注一下公众弄号回复"0006"获取源码
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Demonslzh6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值