多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 微信公眾平臺之超簡單實用的天氣預報后臺實現

微信公眾平臺之超簡單實用的天氣預報后臺實現

來源:程序員人生   發布時間:2014-12-18 09:00:06 閱讀次數:3943次

微信公眾平臺之超簡單實用的天氣預報后臺實現


        概述,前段時間我在開發1個自己的微信公眾平臺,需要實現天氣預報功能,在網上度娘了下,實現天氣預報的接口API還蠻多的,有:中國氣象局、雅虎和新浪等,中國天氣預報接口需要全國的編碼,雅虎的有時候訪問不了,研究了下還是新浪提供的接口比較簡單實用。新浪天氣預報API的URL是http://php.weather.sina.com.cn/xml.php?city=%B1%B1%BE%A9&password=DJOYnieT8234jlsK&day=0。其中,city后的城市轉碼。Password固定,Day為0表示當每天氣,1表示第2天的天氣,2表示第3天的天氣,以此類推,最大為4。返回的XML,說明以下:

<Profiles>
<Weather>
<city>廣州</city>
<status1>晴</status1>
<status2>晴</status2>
<figure1>qing</figure1>
<figure2>qing</figure2>
<direction1>無延續風向</direction1>
<direction2>無延續風向</direction2>
<power1>≤3</power1>
<power2>≤3</power2>
<temperature1>7</temperature1>
<temperature2>⑸</temperature2>
<ssd>0</ssd>
<tgd1>7</tgd1>
<tgd2>7</tgd2>
<zwx>2</zwx>
<ktk>7</ktk>
<pollution>3</pollution>
<xcz></xcz>
<zho></zho>
<diy></diy>
<fas></fas>
<chy>6</chy>
<zho_shuoming>暫無</zho_shuoming>
<diy_shuoming>暫無</diy_shuoming>
<fas_shuoming>暫無</fas_shuoming>
<chy_shuoming>棉衣、冬大衣、皮茄克、內著襯衫或羊毛褻服、毛衣、外罩大衣</chy_shuoming>
<pollution_l>1般</pollution_l>
<zwx_l>弱</zwx_l>
<ssd_l>較涼</ssd_l>
<fas_l>暫無</fas_l>
<zho_l>暫無</zho_l>
<chy_l>薄冬衣</chy_l>
<ktk_l>建議開啟(制熱)</ktk_l>
<xcz_l>暫無</xcz_l>
<diy_l>暫無</diy_l>
<pollution_s>對空氣污染物分散無明顯影響</pollution_s>
<zwx_s>紫外線弱</zwx_s>
<ssd_s>老年、幼兒、體弱者外出需要帶上薄圍巾、薄手套。</ssd_s>
<ktk_s>建議開啟空調</ktk_s>
<xcz_s>暫無</xcz_s>
<gm>2</gm>
<gm_l>易發期</gm_l>
<gm_s>天氣很涼,季節轉換的氣候,慎重增加衣服;較易引發感冒;</gm_s>
<yd>5</yd>
<yd_l>不適合</yd_l>
<yd_s>雖然晴空萬里,但是戶外運動時會感到很涼;</yd_s>
<savedate_weather>2013-03-01</savedate_weather>
<savedate_life>2013-03-01</savedate_life>
<savedate_zhishu>2013-03-01</savedate_zhishu>
</Weather>
</Profiles>

標簽中1表示白天,2表示夜間

<status>

< figure>

<direction>

<power>

<temperature>

<ssd>

<ssd_l>

<ssd_s>

<tgd>

<zwx>

<zwx_l>

<zwx_s>

<ktk>

<ktk_l>

<ktk_s>

<pollution>

<pollution_l>

<pollution_s>

<xcz>

<xcz_l>

<xcz_s>

<chy>

<chy_l>

<chy_shuoming>

<gm>

<gm_l>

<gm_s>

<yd>

<yd_l>

<yd_s>

<zho>

<zho_l>

<zho_shuoming>

<diy>

<diy_l>

<diy_shuoming>

<fas>

<fas_l>

<fas_shuoming>

<savedate_weather>

<savedate_life>

<savedate_zhishu>

天氣情況中文

天氣情況拼音

風向

風級

溫度

體感指數數值

體感度指數

體感度指數說明

體感溫度

紫外線指數數值

紫外線指數

紫外線指數說明

空調指數數值

空調指數


空調指數說明

污染指數數值

污染物分散條件

污染指數說明

洗車指數數值

洗車指數

洗車指數說明

穿衣指數數值

穿衣指數

穿衣說明

感冒指數數值

感冒指數

感冒指數說明

運動指數數值

運動指數

運動指數說明

天氣預報日期

生活日期

指很多天期


        實現,下面就貼出我具體實現的代碼,雖然返回的是XML,但是我沒有使用DOM4J或XStream進行解析,完全使用簡單的正則表達式就弄定了,空話少說,看具體代碼:

1、weather服務類

package com.mghs.service; import java.io.UnsupportedEncodingException; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.mghs.util.GetAppConfUtil; import com.mghs.util.HttpRequestUtil; /** * 天氣預報服務 * @author lanp * @since 2014⑺⑵9 20:56:16 * @version v1.0.1 */ public class WeatherService { /** * GBK編碼 * @param source * @return */ public static String urlEncodeGBK(String source) { String result = source; try { result = java.net.URLEncoder.encode(source, "GBK"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return result; } /** * 獲得天氣預報XML信息并返回 * @param source * @return */ public static String getWeatherXml(String source,int day) { String dst = null; // 組裝查詢地址 String requestUrl = "http://php.weather.sina.com.cn/xml.php?city={keyWord}&password=DJOYnieT8234jlsK&day="+day; // 對參數q的值進行urlEncode utf⑻編碼 requestUrl = requestUrl.replace("{keyWord}", HttpRequestUtil.urlEncode(source, "GBK")); dst = HttpRequestUtil.httpRequest(requestUrl); return dst; } /** * 獲得今天、明天和后天的天氣預報信息并返回 * @param source * @return */ public static String getWeatherInfo(String source) { StringBuffer buffer = new StringBuffer(); buffer.append(source).append(" 今明后3每天氣情況以下: "); for(int i=0;i<3;i++) { String weatherXml = getWeatherXml(source,i); if(null==weatherXml || "".equals(weatherXml)) return ""; String status1 = ""; String direction1 = ""; String temperature1 = ""; String temperature2 = ""; String savedate_weather = ""; String ssd_l = ""; String yd_s = ""; Pattern p = Pattern.compile("(.*)(<status1>)(.*?)(</status1>)(.*)"); Matcher m = p.matcher(weatherXml); if(m.matches()) status1 = m.group(3); if(null==status1 || "".endsWith(status1)) return ""; p = Pattern.compile("(.*)(<direction1>)(.*?)(</direction1>)(.*)"); m = p.matcher(weatherXml); if(m.matches()) direction1 = m.group(3); p = Pattern.compile("(.*)(<temperature1>)(.*?)(</temperature1>)(.*)"); m = p.matcher(weatherXml); if(m.matches()) temperature1 = m.group(3); p = Pattern.compile("(.*)(<temperature2>)(.*?)(</temperature2>)(.*)"); m = p.matcher(weatherXml); if(m.matches()) temperature2 = m.group(3); p = Pattern.compile("(.*)(<savedate_weather>)(.*?)(</savedate_weather>)(.*)"); m = p.matcher(weatherXml); if(m.matches()) savedate_weather = m.group(3); p = Pattern.compile("(.*)(<ssd_l>)(.*?)(</ssd_l>)(.*)"); m = p.matcher(weatherXml); if(m.matches()) ssd_l = m.group(3); p = Pattern.compile("(.*)(<yd_s>)(.*?)(</yd_s>)(.*)"); m = p.matcher(weatherXml); if(m.matches()) yd_s = m.group(3); buffer.append(savedate_weather).append(" ").append(status1).append(" ").append(direction1).append(" ").append(temperature2) .append("°-").append(temperature1).append("° ").append(ssd_l).append(" ").append("溫馨提示:").append(yd_s).append(" "); } return (null==buffer?"":buffer.toString()); } /** * @param args */ public static void main(String[] args) { System.out.println(getWeatherInfo("廣州")); } }

2、http工具類

package com.mghs.util; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; /** * Http要求工具類 * @author lanp * @since 2014⑻⑵4 13:30:56 * @version v1.0.1 */ public class HttpRequestUtil { /** * 編碼 * @param source * @return */ public static String urlEncode(String source,String encode) { String result = source; try { result = java.net.URLEncoder.encode(source,encode); } catch (UnsupportedEncodingException e) { e.printStackTrace(); return "0"; } return result; } /** * 發起http要求獲得返回結果 * @param requestUrl 要求地址 * @return */ public static String httpRequest(String requestUrl) { StringBuffer buffer = new StringBuffer(); try { URL url = new URL(requestUrl); HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection(); httpUrlConn.setDoOutput(false); httpUrlConn.setDoInput(true); httpUrlConn.setUseCaches(false); httpUrlConn.setRequestMethod("GET"); httpUrlConn.connect(); // 將返回的輸入流轉換成字符串 InputStream inputStream = httpUrlConn.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf⑻"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String str = null; while ((str = bufferedReader.readLine()) != null) { buffer.append(str); } bufferedReader.close(); inputStreamReader.close(); // 釋放資源 inputStream.close(); inputStream = null; httpUrlConn.disconnect(); } catch (Exception e) { System.out.println(e.getStackTrace()); } return buffer.toString(); } /** * 發送http要求獲得返回的輸入流 * @param requestUrl 要求地址 * @return InputStream */ public static InputStream httpRequestIO(String requestUrl) { InputStream inputStream = null; try { URL url = new URL(requestUrl); HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection(); httpUrlConn.setDoInput(true); httpUrlConn.setRequestMethod("GET"); httpUrlConn.connect(); // 取得返回的輸入流 inputStream = httpUrlConn.getInputStream(); } catch (Exception e) { e.printStackTrace(); } return inputStream; } }

歡迎大家關注小編的微信公眾平臺:MyGoodHelper,是您出行、生活、學習和文娛的得力助手,我們1起進步。OK,TKS!

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲成人偷拍自拍 | 久久久久久亚洲精品 | 亚洲视频免费 | 自拍偷拍图区 | 免费福利影院 | 日本欧美一区 | 亚洲视频一二区 | 国产一区精品视频 | 一级一级一级毛片免费毛片 | 欧美一级日韩一级亚洲一级 | 亚洲精品中文字幕字幕 | 国产91一区二这在线播放 | 亚洲精品网址 | 亚洲免费黄网 | 伊人久久大香线焦综合四虎 | 亚洲欧美一区二区久久 | 国产午夜精品免费一二区 | 国产精品久久久久天天影视 | 精品国产不卡一区二区三区 | 亚洲欧美另类日韩 | 久久93精品国产91久久综合 | 日韩高清一区二区三区五区七区 | 日本护士xxxxx极品 | 欧美国产成人一区二区三区 | 黑人videovideosex大 | 久草在线视频福利 | 尤物视频免费 | 校园 图片区 视频 小说专区 | 亚洲欧洲成人 | 日韩在线视频不卡一区二区三区 | 精品伊人久久久大香线蕉欧美 | 欧美亚洲国产精品久久 | 精品一精品国产一级毛片 | 日本不卡在线观看免费v | 午夜国产精品福利在线观看 | 2021午夜国产精品福利 | 精品久久久久久亚洲精品 | 最近免费中文字幕大全高清大全1 | 日本欧美在线 | 亚洲免费福利 | 俄罗斯free性欧美hd |