/** * 功能说明:更新高德的省市区到我们的省市区表里 * @author MrDoubi 2019-07-08 10:12:30 * @return model */ public AppModel updateInitGaoDe(){ //慎用! //我本人用来删除省市区表原来的记录的 provinceDao.delAllPCA(); //高德的key 申请时选择web服务 String gaodeKey = ""; //一个http请求 这个方法放在羡慕 String res = HttpUtils.sendPost("http://restapi.amap.com/v3/config/district","key="+gaodeKey+"&subdistrict=3"); JSONObject json = JSONObject.parseObject(res); int count = 0; if(json.get("status").equals("1")){ //国家 暂时只有中国 JSONArray districts = json.getJSONArray("districts"); for (int i = 0; i < districts.size(); i++) { JSONObject district = districts.getJSONObject(i); //省份 JSONArray provinces = district.getJSONArray("districts"); for (int j = 0; j < provinces.size(); j++) { JSONObject province = provinces.getJSONObject(j); System.out.println( "province :::::: ==== name:"+province.getString("name")+ " center:"+province.getString("center")+ " adcode:"+province.getString("adcode") ); //在这里新增省份 到表中 //市 JSONArray citys = province.getJSONArray("districts"); for (int k = 0; k < citys.size(); k++) { JSONObject city = citys.getJSONObject(k); System.out.println( "city :::::: ==== name:"+city.getString("name")+ " center:"+city.getString("center")+ " adcode:"+city.getString("adcode") ); //在这里新增市 到表中 //区 JSONArray areas = city.getJSONArray("districts"); for (int l = 0; l < areas.size(); l++) { JSONObject area = areas.getJSONObject(l); count++; System.out.println( "area :::::: ==== name:"+area.getString("name")+ " center:"+area.getString("center")+ " adcode:"+area.getString("adcode") ); //在这里新增区 到表中 } } } } System.out.println("获取成功 共"+count+"条数据"); return new AppModel(0,"更新成功!"); }else { System.err.println(json.get("info")); return new AppModel(-1,"更新失败!"+json.getString("info")); } }
/** * 向指定 URL 发送POST方法的请求 * * @param url 发送请求的 URL * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return 所代表远程资源的响应结果 */ public static String sendPost(String url, String param) { PrintWriter out = null; BufferedReader in = null; StringBuilder result = new StringBuilder(); try { String urlNameString = url + "?" + param; log.info("sendPost - {}", urlNameString); URL realUrl = new URL(urlNameString); URLConnection conn = realUrl.openConnection(); conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); conn.setRequestProperty("Accept-Charset", "utf-8"); conn.setRequestProperty("contentType", "utf-8"); conn.setDoOutput(true); conn.setDoInput(true); out = new PrintWriter(conn.getOutputStream()); out.print(param); out.flush(); in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8")); String line; while ((line = in.readLine()) != null) { result.append(line); } log.info("recv - {}", result); } catch (ConnectException e) { log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e.getMessage()); } catch (SocketTimeoutException e) { log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e.getMessage()); } catch (IOException e) { log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e.getMessage()); } catch (Exception e) { log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e.getMessage()); } finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException ex) { log.error("调用in.close Exception, url=" + url + ",param=" + param, ex.getMessage()); } } return result.toString(); }