java获取中国城市代码 中国城市ID

  1. package org.com.Weather.weather;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.IOException;  
  5. import java.io.InputStreamReader;  
  6. import java.net.MalformedURLException;  
  7. import java.net.URL;  
  8.   
  9. /** 
  10.  * 中央气象台的天气预报API  
  11.  * */  
  12. public class Wweather {  
  13.       
  14.         /** 
  15.          * 获取所有中国 省份及一级城市 
  16.          * */  
  17.         public String weather() {  
  18.                 // TODO Auto-generated method stub  
  19.                 String ws_url = "http://m.weather.com.cn/data5/city.xml";  
  20.                 String str= "";  
  21.                 try {  
  22.                     URL url = new URL(ws_url);  
  23.                     BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),"utf-8"));//解决乱码问题  
  24.                     StringBuffer sb = new StringBuffer();  
  25.                     String s = "";  
  26.                     while ((s = br.readLine()) != null) {  
  27.                         sb.append(s + "\r\n"); //将内容读取到StringBuffer中  
  28.                     }  
  29.                     br.close();  
  30.                     //System.out.println(sb.toString()); 屏幕  
  31.                     str = new String(sb.toString().getBytes());  
  32.                 } catch (MalformedURLException e) {  
  33.                     // TODO Auto-generated catch block  
  34.                     e.printStackTrace();  
  35.                 } catch (IOException e) {  
  36.                     // TODO Auto-generated catch block  
  37.                     e.printStackTrace();  
  38.                 }  
  39.                 return str;  
  40.         }  
  41.           
  42.         /** 
  43.          * 根据传入参数获取二级城市 
  44.          * */  
  45.         public String secondCity(String id){  
  46.             String ws_url = "http://m.weather.com.cn/data5/city"+id+".xml";  
  47.             String str= "";  
  48.             try {  
  49.                 URL url = new URL(ws_url);  
  50.                 BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),"utf-8"));//解决乱码问题  
  51.                 StringBuffer sb = new StringBuffer();  
  52.                 String s = "";  
  53.                 while ((s = br.readLine()) != null) {  
  54.                     sb.append(s + "\r\n"); //将内容读取到StringBuffer中  
  55.                 }  
  56.                 br.close();  
  57.                 //System.out.println(sb.toString()); 屏幕  
  58.                 str = new String(sb.toString().getBytes());  
  59.             } catch (MalformedURLException e) {  
  60.                 // TODO Auto-generated catch block  
  61.                 e.printStackTrace();  
  62.             } catch (IOException e) {  
  63.                 // TODO Auto-generated catch block  
  64.                 e.printStackTrace();  
  65.             }  
  66.             return str;  
  67.         }  
  68.         /** 
  69.          * 根据传入参数得到城市天气预报信息ID, 其实也可以直接调用上面方法,为理解方便,故多加一个 
  70.          * */  
  71.         public String weatherCityId(String id){  
  72.             String ws_url = "http://m.weather.com.cn/data5/city"+id+".xml";  
  73.             String str= "";  
  74.             try {  
  75.                 URL url = new URL(ws_url);  
  76.                 BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),"utf-8"));//解决乱码问题  
  77.                 StringBuffer sb = new StringBuffer();  
  78.                 String s = "";  
  79.                 while ((s = br.readLine()) != null) {  
  80.                     sb.append(s + "\r\n"); //将内容读取到StringBuffer中  
  81.                 }  
  82.                 br.close();  
  83.                 //System.out.println(sb.toString()); 屏幕  
  84.                 str = new String(sb.toString().getBytes());  
  85.             } catch (MalformedURLException e) {  
  86.                 // TODO Auto-generated catch block  
  87.                 e.printStackTrace();  
  88.             } catch (IOException e) {  
  89.                 // TODO Auto-generated catch block  
  90.                 e.printStackTrace();  
  91.             }  
  92.             return str;  
  93.         }  
  94.     public static void main(String[] args) {  
  95.         Wweather w=new Wweather();  
  96.         String[] strArray=w.weather().split(",");  
  97.         for(int i=0;i<strArray.length;i++){  
  98.             String[] strArr=strArray[i].split("\\|");  
  99.             try {  
  100.                 Thread.sleep(1000);  
  101.             } catch (InterruptedException e) {  
  102.                 // TODO Auto-generated catch block  
  103.                 e.printStackTrace();  
  104.             }  
  105.             String[] strArray2=w.secondCity(strArr[0]).split(",");  
  106.             for(int j=0;j<strArray2.length;j++){  
  107.                 String[] strArray3=w.weatherCityId(strArray2[j].split("\\|")[0]).split(",");  
  108.                 for(int m=0;m<strArray3.length;m++){  
  109.                     System.out.println(strArray3[m].split("\\|")[1]+"  "+w.weatherCityId(strArray3[m].split("\\|")[0]).split("\\|")[1]);  
  110.                 }  
  111.             }  
  112.               
  113.         }  
  114.     }  
  115. }  
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,获取全国省份和城市可以通过解析JSON数据来实现。以下是一个使用阿里巴巴的城市数据API获取全国省份和城市的例子: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONObject; public class ProvinceCityExample { public static void main(String[] args) { String apiUrl = "http://cdn.cnbj1.fds.api.mi-img.com/mi-mall/5d6d9de8f27ad.json"; try { URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); JSONObject jsonObject = new JSONObject(response.toString()); JSONArray provincesArray = jsonObject.getJSONArray("provinces"); List<String> provinces = new ArrayList<>(); for (int i = 0; i < provincesArray.length(); i++) { JSONObject provinceObj = provincesArray.getJSONObject(i); String provinceName = provinceObj.getString("name"); JSONArray citiesArray = provinceObj.getJSONArray("cities"); List<String> cities = new ArrayList<>(); for (int j = 0; j < citiesArray.length(); j++) { JSONObject cityObj = citiesArray.getJSONObject(j); String cityName = cityObj.getString("name"); cities.add(cityName); } String province = provinceName + ":" + cities.toString(); provinces.add(province); } System.out.println(provinces.toString()); } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码中,我们使用阿里巴巴的城市数据API获取JSON格式的城市数据。然后,我们解析JSON数据,提取每个省份和城市名称,并将它们存储在一个List中。最后,我们将省份和城市名称打印出来。请注意,这个例子仅提供了省份和城市名称获取,您可以根据需要对其进行更改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值