java获取城市id_java獲取中國城市代碼 中國城市ID

该Java程序用于从中央气象台的API获取中国所有省份和一级城市的ID,以及根据ID获取二级城市和相应天气预报信息。通过HTTP请求读取XML数据,解决乱码问题,并将内容解析输出。
摘要由CSDN通过智能技术生成

package org.com.Weather.weather;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.MalformedURLException;

import java.net.URL;

/**

* 中央氣象台的天氣預報API

* */

public class Wweather {

/**

* 獲取所有中國 省份及一級城市

* */

public String weather() {

// TODO Auto-generated method stub

String ws_url = "http://m.weather.com.cn/data5/city.xml";

String str= "";

try {

URL url = new URL(ws_url);

BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),"utf-8"));//解決亂碼問題

StringBuffer sb = new StringBuffer();

String s = "";

while ((s = br.readLine()) != null) {

sb.append(s + "\r\n"); //將內容讀取到StringBuffer中

}

br.close();

//System.out.println(sb.toString()); 屏幕

str = new String(sb.toString().getBytes());

} catch (MalformedURLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return str;

}

/**

* 根據傳入參數獲取二級城市

* */

public String secondCity(String id){

String ws_url = "http://m.weather.com.cn/data5/city"+id+".xml";

String str= "";

try {

URL url = new URL(ws_url);

BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),"utf-8"));//解決亂碼問題

StringBuffer sb = new StringBuffer();

String s = "";

while ((s = br.readLine()) != null) {

sb.append(s + "\r\n"); //將內容讀取到StringBuffer中

}

br.close();

//System.out.println(sb.toString()); 屏幕

str = new String(sb.toString().getBytes());

} catch (MalformedURLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return str;

}

/**

* 根據傳入參數得到城市天氣預報信息ID, 其實也可以直接調用上面方法,為理解方便,故多加一個

* */

public String weatherCityId(String id){

String ws_url = "http://m.weather.com.cn/data5/city"+id+".xml";

String str= "";

try {

URL url = new URL(ws_url);

BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),"utf-8"));//解決亂碼問題

StringBuffer sb = new StringBuffer();

String s = "";

while ((s = br.readLine()) != null) {

sb.append(s + "\r\n"); //將內容讀取到StringBuffer中

}

br.close();

//System.out.println(sb.toString()); 屏幕

str = new String(sb.toString().getBytes());

} catch (MalformedURLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return str;

}

public static void main(String[] args) {

Wweather w=new Wweather();

String[] strArray=w.weather().split(",");

for(int i=0;i

String[] strArr=strArray[i].split("\\|");

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

String[] strArray2=w.secondCity(strArr[0]).split(",");

for(int j=0;j

String[] strArray3=w.weatherCityId(strArray2[j].split("\\|")[0]).split(",");

for(int m=0;m

System.out.println(strArray3[m].split("\\|")[1]+" "+w.weatherCityId(strArray3[m].split("\\|")[0]).split("\\|")[1]);

}

}

}

}

}

因需要中國所有城市ID,所以寫此程序獲取

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、付费专栏及课程。

余额充值