JAVA获取未来6天的天气预报

  1. import java.io.BufferedReader;
  2.  import java.io.FileNotFoundException;
  3.  import java.io.IOException;
  4.  import java.io.InputStreamReader;
  5.  import java.net.SocketTimeoutException;
  6.  import java.net.URL;
  7.  import java.net.URLConnection;
  8.  import java.text.SimpleDateFormat;
  9.  import java.util.ArrayList;
  10.  import java.util.Calendar;
  11.  import java.util.Date;
  12.  import java.util.HashMap;
  13.  import java.util.List;
  14.  import java.util.Map;
  15.  import net.sf.json.JSONObject;
  16.  /**
  17.   * 得到未来6天的天气(含今天)
  18.   * @author Chewl
  19.   *
  20.   */
  21.  public class Weather {
  22.      String Ctiyid;
  23.      URLConnection connectionData;
  24.      StringBuilder sb;
  25.      BufferedReader br;// 读取data数据流
  26.      JSONObject jsonData;
  27.      JSONObject info;
  28.      public Weather(String Cityid) throws IOException ,NullPointerException{
  29.          // 解析本机ip地址
  30.          this.Ctiyid = Cityid;
  31.          // 连接中央气象台的API
  32.          URL url = new URL(“http://m.weather.com.cn/data/” + Ctiyid + “.html”);
  33.          connectionData = url.openConnection();
  34.          connectionData.setConnectTimeout(1000);
  35.          try {
  36.              br = new BufferedReader(new InputStreamReader(
  37.                      connectionData.getInputStream(), “UTF-8”));
  38.              sb = new StringBuilder();
  39.              String line = null;
  40.              while ((line = br.readLine()) != null)
  41.                  sb.append(line);
  42.          } catch (SocketTimeoutException e) {
  43.              System.out.println(“连接超时”);
  44.          } catch (FileNotFoundException e) {
  45.              System.out.println(“加载文件出错”);
  46.          }
  47.              String datas = sb.toString();
  48.             jsonData = JSONObject.fromObject(datas);
  49.            //  System.out.println(jsonData.toString());
  50.             info = jsonData.getJSONObject(“weatherinfo”);
  51.          //得到1到6天的天气情况
  52.         List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
  53.          for(int i=1;i<=6;i++){
  54.           //得到未来6天的日期
  55.          Calendar cal = Calendar.getInstance();
  56.           cal.add(Calendar.DAY_OF_YEAR, i-1);
  57.           Date date = cal.getTime();
  58.           SimpleDateFormat sf = new SimpleDateFormat(“yyyy年MM月dd日”);
  59.          Map<String,Object> map = new HashMap<String, Object>();
  60.           map.put(“city”, info.getString(“city”).toString());//城市
  61.          map.put(“date_y”, sf.format(date));//日期
  62.          map.put(“week”, getWeek(cal.get(Calendar.DAY_OF_WEEK)));//星期
  63.          map.put(“fchh”, info.getString(“fchh”).toString());//发布时间
  64.          map.put(“weather”, info.getString(“weather”+i).toString());//天气
  65.          map.put(“temp”, info.getString(“temp”+i).toString());//温度
  66.          map.put(“wind”, info.getString(“wind”+i).toString());//风况
  67.          map.put(“fl”, info.getString(“fl”+i).toString());//风速
  68.          map.put(“index”, info.getString(“index”).toString());// 今天的穿衣指数
  69.           map.put(“index_uv”, info.getString(“index_uv”).toString());// 紫外指数
  70.           map.put(“index_tr”, info.getString(“index_tr”).toString());// 旅游指数
  71.           map.put(“index_co”, info.getString(“index_co”).toString());// 舒适指数
  72.           map.put(“index_cl”, info.getString(“index_cl”).toString());// 晨练指数
  73.           map.put(“index_xc”, info.getString(“index_xc”).toString());//洗车指数
  74.           map.put(“index_d”, info.getString(“index_d”).toString());//天气详细穿衣指数
  75.           list.add(map);
  76.          }
  77.          //控制台打印出天气
  78.        for(int j=0;j<list.size();j++){
  79.         Map<String,Object> wMap = list.get(j);
  80.         System.out.println(wMap.get(“city”)+”\t”+wMap.get(“date_y”)+”\t”+wMap.get(“week”)+”\t”
  81.         +wMap.get(“weather”)+”\t”+wMap.get(“temp”)+”\t”+wMap.get(“index_uv”));
  82.         }
  83.      }
  84.      private String getWeek(int iw){
  85.       String weekStr = “”;
  86.       switch (iw) {
  87.  case 1:weekStr = “星期天”;break;
  88.  case 2:weekStr = “星期一”;break;
  89.  case 3:weekStr = “星期二”;break;
  90.  case 4:weekStr = “星期三”;break;
  91.  case 5:weekStr = “星期四”;break;
  92.  case 6:weekStr = “星期五”;break;
  93.  case 7:weekStr = “星期六”;break;
  94.  default:
  95.  break;
  96.  }
  97.       return weekStr;
  98.      }
  99.      public static void main(String[] args) {
  100.          try {
  101.              new Weather(“101010100”); // 101010100(北京)就是你的城市代码
  102.         } catch (Exception e) {
  103.              e.printStackTrace();
  104.          }
  105.      }
  106.  }

标签