Java调用身份证读取器(中控)读取信息并转换为Json,并拆分地址(正则)

  • 步骤一:请求地址,并获取地址带过来的身份信息
/**
     * 请求地址,解析身份证读取数据
     * @param requestUrl
     * @param requestMethod
     * @return
     */
    public static String httpRequest(String requestUrl,String requestMethod){
        StringBuffer buffer=null;
        try{
            //使用URL访问http请求
            URL url=new URL(requestUrl);
            //建立连接
            HttpURLConnection conn=(HttpURLConnection)url.openConnection();
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setRequestMethod(requestMethod);
            conn.connect();
            //读取服务器端返回的内容
            InputStream is=conn.getInputStream();
            InputStreamReader isr=new InputStreamReader(is,"utf-8");
            BufferedReader br=new BufferedReader(isr);
            buffer=new StringBuffer();
            String line=null;
            //拼接所有信息,返回String
            while((line=br.readLine())!=null){
                buffer.append(line);
            }
        }catch(Exception e){
            e.printStackTrace();
        }
        return buffer.toString();
    }

 

 步骤二:将返回的字符串信息封装成Json对象(根据具体需要的信息封装)

/**
     * 将身份证信息转换为Json串
     * @param s
     * @return
     */
    public static JSONObject StrToJson(String s){
        JSONObject json= JSONObject.fromObject(s);
        JSONObject jsonInfo= JSONObject.fromObject(json.get("Certificate"));
        return jsonInfo;
    }

 

 步骤三:获取地址信息,将地址信息拆分为省,市,区等信息(正则方式)

/**
     * 解析地址信息(省市县。。。。)
     * @param address
     * @return
     */
    public static Map addressResolution(String address) {
        //正则验证表达式
        String regex = "(?[^省]+自治区|.*?省|.*?行政区|.*?市)" +
                "(?[^市]+自治州|.*?地区|.*?行政单位|.+盟|市辖区|.*?市|.*?县)" +
                "(?[^县]+县|.+区|.+市|.+旗|.+海域|.+岛)" +
                "?(?[^区]+区|.+镇)?" +
                "(?.*)";
        //Pattern创建正则,matcher验证正则
        Matcher m = Pattern.compile(regex).matcher(address);
        //接收对象
        String province = null;
        String city = null;
        String county = null;
        String town = null;
        String village = null;
        Map map = null;
        //find方法:在目标字符串里查找下一个匹配子串。如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。
        while (m.find()) {
            map = new LinkedHashMap();
            //group方法:返回当前查找而获得的与组匹配的所有子串内容。
            province = m.group("province");
            map.put("province", province == null ? "" : province.trim());
            city = m.group("city");
            map.put("city", city == null ? "" : city.trim());
            county = m.group("county");
            map.put("county", county == null ? "" : county.trim());
            town = m.group("town");
            map.put("town", town == null ? "" : town.trim());
            village = m.group("village");
            map.put("village", village == null ? "" : village.trim());
        }
        return map;
    }

 

 验证main类:返回map集合信息

public static void main(String[] args) {
        //步骤一
        String s=httpRequest("请求地址","GET");
        //步骤二
        JSONObject jsonInfo = StrToJson(s);
        //步骤三
        Map mapInfo = addressResolution(jsonInfo.get("Address").toString());
        System.out.println(mapInfo);
    }

 

你可能感兴趣的:(Java)