java获取最新地区

 在开发中我们一般会用到用到下拉地区联动,而数据的来源确是个问题,而地区不是一成不变的,下面我分享一个我自己琢磨的获取三级地区的一个java方法,可参考。数据来源http://202.108.98.30/map    这个是比较权威的。
  jar包准备:commons-codec-1.6.jar  commons-io-2.2.jar   commons-logging-1.1.2.jar commons.httpclient.jar  gson-2.2.4.jar poi-3.8-20120326.jar需要这些jar,可以网上搜索下载,我一般会去这个http://www.manyjar.com/ 网站下载。方便快捷,不需要登录,jar包还是蛮全面的

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.io.IOUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;

/**
 * 
 * 
 * @author 氵言
 * @date 2015-11-30 下午06:13:12
 * 
 */  
public class Test {


    public static void main(String[] args) throws Exception {
        List<String> map = new ArrayList<String>();
        map.add("北京市(京)");
        map.add("天津市(津)");
        map.add("河北省(冀)");
        map.add("山西省(晋)");
        map.add("内蒙古自治区(内蒙古)");
        map.add("辽宁省(辽)");
        map.add("吉林省(吉)");
        map.add("黑龙江省(黑)");
        map.add("上海市(沪)");
        map.add("江苏省(苏)");
        map.add("浙江省(浙)");
        map.add("安徽省(皖)");
        map.add("福建省(闽)");
        map.add("江西省(赣)");
        map.add("山东省(鲁)");
        map.add("河南省(豫)");
        map.add("湖北省(鄂)");
        map.add("湖南省(湘)");
        map.add("广东省(粤)");
        map.add("广西壮族自治区(桂)");
        map.add("海南省(琼)");
        map.add("重庆市(渝)");
        map.add("四川省(川、蜀)");
        map.add("贵州省(黔、贵)");
        map.add("云南省(滇、云)");
        map.add("西藏自治区(藏)");
        map.add("陕西省(陕、秦)");
        map.add("甘肃省(甘、陇)");
        map.add("青海省(青)");
        map.add("宁夏回族自治区(宁)");
        map.add("新疆维吾尔自治区(新)");
        map.add("香港特别行政区(港)");
        map.add("澳门特别行政区(澳)");
        map.add("台湾省(台)");

        Gson gson = gson = new GsonBuilder().setDateFormat("yyyy-MM-dd hh:mm:ss").create();
        List<Map<String, String>> listMap = new ArrayList<Map<String, String>>();
        for (String mapStr : map) {
            HttpClient client = new HttpClient();
            PostMethod post = new PostMethod("http://202.108.98.30/selectJson");//请求获取市/区列表的地址
            post.setRequestHeader("content-type", "application/x-www-form-urlencoded; charset=utf-8");
            NameValuePair[] pare = new NameValuePair[] { new NameValuePair("shengji", mapStr) };//塞入上面的map的省级名
            post.setRequestBody(pare);
            client.executeMethod(post);
            String ret = IOUtils.toString(post.getResponseBodyAsStream());
            List<Map<String,Object>> l = gson.fromJson(ret, new TypeToken<List<Map<String,Object>>>() {
            }.getType());
            for (Map s : l) {
                HttpClient client_1 = new HttpClient();
                String diji = (String) s.get("diji");
                NameValuePair[] pare_1 = new NameValuePair[] { new NameValuePair("shengji", mapStr), new NameValuePair("diji", diji) };
                PostMethod post_1 = new PostMethod("http://202.108.98.30/selectJson");
                post_1.setRequestHeader("content-type", "application/x-www-form-urlencoded; charset=utf-8");
                post_1.setRequestBody(pare_1);
                client_1.executeMethod(post_1);
                String ret_1 = IOUtils.toString(post_1.getResponseBodyAsStream());
                List<Map<String,Object>> l_1 = gson.fromJson(ret_1, new TypeToken<List<Map<String,Object>>>() {
                }.getType());
                System.gc();
                for (Map s_1 : l_1) {
                    String xianji = (String) s_1.get("xianji");
                    if (!"".equals(xianji)) {
                        Map<String, String> m = new HashMap<String, String>();
                        //去掉省级后面的括号和括号里面的内容
                        Integer index = mapStr.indexOf("(");
                        if (index != -1)
                            m.put("shengji", mapStr.substring(0, index));
                        else
                            m.put("shengji", mapStr);
                        m.put("diji", diji);
                        m.put("xianji", xianji);
                        listMap.add(m);
                    }
                }
            }
        }
        System.out.println(listMap);
        /**listMap就是获取到的省市区的数据map,**/
        /**下面就是我把数据填充到excel中,方便查看和导入数据库,数据已经得到,自己可以灵活做处理**/
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet("全国地区表)");
        for (int j = 0; j < listMap.size(); j++) {
            Map<String, String> mmap = listMap.get(j);
            HSSFRow row = sheet.createRow(j);
            HSSFCell cell_1 = row.createCell(0);
            cell_1.setCellValue(mmap.get("shengji"));
            HSSFCell cell_2 = row.createCell(1);
            cell_2.setCellValue(mmap.get("diji"));
            HSSFCell cell_3 = row.createCell(2);
            cell_3.setCellValue(mmap.get("xianji"));
        }
        OutputStream outputStream = new FileOutputStream(new File("c:/address.xls"), true);
        workbook.write(outputStream);
        outputStream.flush();
        outputStream.close();
        System.out.println("完成ing");
    }

}

下图就是我导出的excel
这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值