您的位置:首页 > 编程语言 > Java开发

java获取最新地区

2015-11-30 18:05 573 查看
在开发中我们一般会用到用到下拉地区联动,而数据的来源确是个问题,而地区不是一成不变的,下面我分享一个我自己琢磨的获取三级地区的一个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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: