快捷搜索: 王者荣耀 脱发

微信公众平台开发--天气查询和发送

import java.io.UnsupportedEncodingException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Set; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.GetMethod; import org.json.JSONException; import org.json.JSONObject; public class WeatherSearch { private static LogMessage log =LogMessage.getInstance(); /** * @param url * @return 得到访问页面的返回的数据 */ public static String AccesPage(String url){ String info = null; if(url != null&& !url.equals("")){ try{ HttpClient client = new HttpClient(); GetMethod method = new GetMethod(url); client.getHttpConnectionManager().closeIdleConnections(1); int statusCode = client.executeMethod(method);

//用的http info = method.getResponseBodyAsString(); } catch(Exception e){ log.error("accesPage error:"+e.getLocalizedMessage()); } } return info; } /** * @param xml * @return 解析json得到想要的数据 */ public static String getReturnInfo(String xml){ StringBuffer bf = new StringBuffer(); try { JSONObject json = new JSONObject(xml).getJSONObject("weatherinfo"); bf.append(json.get("date_y").toString()); bf.append(" "+json.get("week").toString()); bf.append(" "+json.get("temp1").toString()); bf.append(" "+json.get("weather1").toString()); bf.append(" "+json.get("wind1").toString()); bf.append(" "); bf.append(getDateAddOne(json.get("date_y").toString())); bf.append(" "+getWeekAddOne(json.get("week").toString())); bf.append(" "+json.get("temp2")); bf.append(" "+json.get("weather2")); bf.append(" "+json.get("wind2")); bf.append(" "); bf.append(getDateAddOne(getDateAddOne(json.get("date_y").toString()))); bf.append(" "+getWeekAddOne(getWeekAddOne(json.get("week").toString()))); bf.append(" "+json.get("temp3")); bf.append(" "+json.get("weather3")); bf.append(" "+json.get("wind3")); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return bf.toString(); } /** * @param date * @return 日期加一 */ public static String getDateAddOne(String datest){ SimpleDateFormat ft = new SimpleDateFormat("yyyy年MM月dd日"); Date date=new Date(); try { date = ft.parse(datest); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(calendar.DAY_OF_MONTH,1); date=calendar.getTime(); return ft.format(date); } public static String getWeekAddOne(String week){ Map<Integer,String> map = new HashMap<Integer, String>(); map.put(1, "星期一"); map.put(2, "星期二"); map.put(3, "星期三"); map.put(4, "星期四"); map.put(5, "星期五"); map.put(6, "星期六"); map.put(7, "星期日"); String weekNow =null; for (Map.Entry<Integer, String> MapString : map.entrySet()) { Integer key=MapString.getKey();//次方法获取键值对的名称 String value=MapString.getValue();//次方法获取键值对的值 if(value.equals(week)){ if(key==7){ weekNow = map.get(1); }else{ weekNow =map.get(key+1); } break; } } return weekNow; } /** * @param cityName * @return */ public static String getCityCode(String cityName){ String requestUrl = "http://someapi.sinaapp.com/citycode/?city={CITY}"; requestUrl = requestUrl.replace("{CITY}", urlEncodeUTF8(cityName)); // 处理空格 requestUrl = requestUrl.replaceAll("\+", "%20"); String cityCode = AccesPage(requestUrl); return cityCode; } /** * UTF-8编码 * * @param source * @return */ private static String urlEncodeUTF8(String source) { String result = source; try { result = java.net.URLEncoder.encode(source, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return result; } //传人citycode 得到 weather json public static String getWeatherByCity(String cityCode){ String url="http://m.weather.com.cn/data/"+cityCode.trim()+".html"; return AccesPage(url); } //整合一下 public static String getIntegration(String cityName){ return getReturnInfo(getWeatherByCity(getCityCode(cityName))); } }

其中的 getWeekAddOne(String week)和 getDateAddOne(String datest)方法是因为中国气象局提供的接口返回的json中只有当天的日期和星期,但是有六天的天气情况(http://m.weather.com.cn/data/101010100.html)

所以要得到得到后两天的日期和星期.

实现的效果 就是发送三天的天气预报,点击就进入中国气象局网站.

经验分享 程序员 微信小程序 职场和发展