天氣API接口穩定的確實沒有,除非是天氣官方提供的, 但是我觀察了下,要是合作伙伴才有開放的可能。
其他的,例如:百度 APIStore、一些同學在其他網站上抓包下來的接口,以及什么各種收費的 API,都沒有穩定的。
現在,我們網站收集了8個天氣接口,采用微服務的方式提供出來,響應效率高,可以達到不限制次數。關鍵是免費的,而且會提供XML
和JSON
兩種方式返回。
接口返回的天氣指數數據很全面,如:溫度
、最高溫度
、最低溫度
、風
、天氣
、空氣質量指數
。
參數只有一個,就是city
,city
在傳參的時候,支持的城市可以帶上市、縣、區之類,如:深圳市、順德區、長沙市、長沙等等。
天氣API JSON返回方式
我測試一下請求北京的天氣,鏈接為:http://www.sojson.com/open/api/weather/json.shtml?city=北京
。
返回成功狀態為:200
,失敗為 非200
。
天氣API JSON返回方式(成功):
{
"status": 200,
"data": {
"wendu": "29",
"ganmao": "各項氣象條件適宜,發生感冒機率較低。但請避免長期處于空調房間中,以防感冒。",
"forecast": [
{
"fengxiang": "南風",
"fengli": "3-4級",
"high": "高溫 32℃",
"type": "多云",
"low": "低溫 17℃",
"date": "16日星期二"
},
{
"fengxiang": "南風",
"fengli": "微風級",
"high": "高溫 34℃",
"type": "晴",
"low": "低溫 19℃",
"date": "17日星期三"
},
{
"fengxiang": "南風",
"fengli": "微風級",
"high": "高溫 35℃",
"type": "晴",
"low": "低溫 22℃",
"date": "18日星期四"
},
{
"fengxiang": "南風",
"fengli": "微風級",
"high": "高溫 35℃",
"type": "多云",
"low": "低溫 22℃",
"date": "19日星期五"
},
{
"fengxiang": "南風",
"fengli": "3-4級",
"high": "高溫 34℃",
"type": "晴",
"low": "低溫 21℃",
"date": "20日星期六"
}
],
"yesterday": {
"fl": "微風",
"fx": "南風",
"high": "高溫 28℃",
"type": "晴",
"low": "低溫 15℃",
"date": "15日星期一"
},
"aqi": "72",
"city": "北京"
},
"message": "OK"
}
天氣API JSON返回方式(失敗)
失敗情況下一般是參數問題,參數不識別。
{
"status": 400,
"message": "Check the parameters."
}
天氣API XML返回方式
我測試一下請求北京的天氣,鏈接為:http://www.sojson.com/open/api/weather/xml.shtml?city=北京
。
天氣API XML返回方式(成功)
<?xml version="1.0" encoding="UTF-8"?>
<resp>
<city>北京</city>
<updatetime>13:35</updatetime>
<wendu>29</wendu>
<fengli>4級</fengli>
<shidu>28%</shidu>
<fengxiang>南風</fengxiang>
<sunrise_1>04:59</sunrise_1>
<sunset_1>19:23</sunset_1>
<sunrise_2></sunrise_2>
<sunset_2></sunset_2>
<environment>
<aqi>72</aqi>
<pm25>52</pm25>
<suggest>極少數敏感人群應減少戶外活動</suggest>
<quality>良</quality>
<MajorPollutants>顆粒物(PM2.5)</MajorPollutants>
<o3>162</o3>
<co>1</co>
<pm10>90</pm10>
<so2>9</so2>
<no2>33</no2>
<time>13:00:00</time>
</environment>
<alarm>
<cityKey>10101</cityKey>
<cityName>
<![CDATA[北京市]]>
</cityName>
<alarmType>
<![CDATA[森林火險]]>
</alarmType>
<alarmDegree>
<![CDATA[橙色]]>
</alarmDegree>
<alarmText>
<![CDATA[北京市氣象臺發布森林火險橙色預警]]>
</alarmText>
<alarm_details>
<![CDATA[市森防辦與市氣象臺于5月5日至15日聯合發布森林火險橙色預警:5日有5級偏北風,陣風達7、8級;6-15日有3、4級偏北風,陣風達6級,氣溫高、空氣干燥,濕度較小。請廣大市民注意森林防火,森林火災報警電話12119。]]>
</alarm_details>
<standard/>
<suggest/>
<imgUrl>
<![CDATA[]]>
</imgUrl>
<time>2017-05-04 19:30:00</time>
</alarm>
<yesterday>
<date_1>15日星期一</date_1>
<high_1>高溫 28℃</high_1>
<low_1>低溫 15℃</low_1>
<day_1>
<type_1>晴</type_1>
<fx_1>南風</fx_1>
<fl_1>微風</fl_1>
</day_1>
<night_1>
<type_1>多云</type_1>
<fx_1>南風</fx_1>
<fl_1>微風</fl_1>
</night_1>
</yesterday>
<forecast>
<weather>
<date>16日星期二</date>
<high>高溫 32℃</high>
<low>低溫 17℃</low>
<day>
<type>多云</type>
<fengxiang>南風</fengxiang>
<fengli>3-4級</fengli>
</day>
<night>
<type>晴</type>
<fengxiang>西北風</fengxiang>
<fengli>微風級</fengli>
</night>
</weather>
<weather>
<date>17日星期三</date>
<high>高溫 34℃</high>
<low>低溫 19℃</low>
<day>
<type>晴</type>
<fengxiang>南風</fengxiang>
<fengli>微風級</fengli>
</day>
<night>
<type>晴</type>
<fengxiang>南風</fengxiang>
<fengli>微風級</fengli>
</night>
</weather>
<weather>
<date>18日星期四</date>
<high>高溫 35℃</high>
<low>低溫 22℃</low>
<day>
<type>晴</type>
<fengxiang>南風</fengxiang>
<fengli>微風級</fengli>
</day>
<night>
<type>多云</type>
<fengxiang>南風</fengxiang>
<fengli>微風級</fengli>
</night>
</weather>
<weather>
<date>19日星期五</date>
<high>高溫 35℃</high>
<low>低溫 22℃</low>
<day>
<type>多云</type>
<fengxiang>南風</fengxiang>
<fengli>微風級</fengli>
</day>
<night>
<type>晴</type>
<fengxiang>南風</fengxiang>
<fengli>微風級</fengli>
</night>
</weather>
<weather>
<date>20日星期六</date>
<high>高溫 34℃</high>
<low>低溫 21℃</low>
<day>
<type>晴</type>
<fengxiang>南風</fengxiang>
<fengli>3-4級</fengli>
</day>
<night>
<type>多云</type>
<fengxiang>南風</fengxiang>
<fengli>微風級</fengli>
</night>
</weather>
</forecast>
<zhishus>
<zhishu>
<name>晨練指數</name>
<value>較適宜</value>
<detail>早晨氣象條件較適宜晨練,但風力稍大,晨練時請注意選擇避風的地點,避免迎風鍛煉。</detail>
</zhishu>
<zhishu>
<name>舒適度</name>
<value>較不舒適</value>
<detail>白天天氣多云,同時會感到有些熱,不很舒適。</detail>
</zhishu>
<zhishu>
<name>穿衣指數</name>
<value>炎熱</value>
<detail>天氣炎熱,建議著短衫、短裙、短褲、薄型T恤衫等清涼夏季服裝。</detail>
</zhishu>
<zhishu>
<name>感冒指數</name>
<value>少發</value>
<detail>各項氣象條件適宜,發生感冒機率較低。但請避免長期處于空調房間中,以防感冒。</detail>
</zhishu>
<zhishu>
<name>晾曬指數</name>
<value>適宜</value>
<detail>天氣不錯,適宜晾曬。趕緊把久未見陽光的衣物搬出來吸收一下太陽的味道吧!</detail>
</zhishu>
<zhishu>
<name>旅游指數</name>
<value>適宜</value>
<detail>天氣較好,溫度稍高,幸好風稍大,會緩解稍熱的天氣。適宜旅游,可不要錯過機會呦!</detail>
</zhishu>
<zhishu>
<name>紫外線強度</name>
<value>中等</value>
<detail>屬中等強度紫外線輻射天氣,外出時建議涂擦SPF高于15、PA+的防曬護膚品,戴帽子、太陽鏡。</detail>
</zhishu>
<zhishu>
<name>洗車指數</name>
<value>較適宜</value>
<detail>較適宜洗車,未來一天無雨,風力較小,擦洗一新的汽車至少能保持一天。</detail>
</zhishu>
<zhishu>
<name>運動指數</name>
<value>較適宜</value>
<detail>天氣較好,但風力較大,推薦您進行室內運動,若在戶外運動請注意防風。</detail>
</zhishu>
<zhishu>
<name>約會指數</name>
<value>較不適宜</value>
<detail>天氣較好,且室外有風,外出約會可能會讓戀人受些苦,最好在溫暖的室內促膝談心。</detail>
</zhishu>
<zhishu>
<name>雨傘指數</name>
<value>不帶傘</value>
<detail>天氣較好,不會降水,因此您可放心出門,無須帶雨傘。</detail>
</zhishu>
</zhishus>
</resp>
<!-- 10.10.156.163(10.10.156.163):33961 ; 10.10.162.42:8080 -->
天氣API XML返回方式(失敗)
<?xml version="1.0" encoding="UTF-8"?>
<resp>
<status>400</status>
<error>Check the parameters.</error>
</resp>
<!-- 20170516 14:00:33:033 -->
接口使用申明
因為涉及到并發和有效資源問題,小型站長可以和我大個招呼,我可以提供免費使用,如果是日調用超過2000次,請務必和我說明,我盡量保證可用性,如果沒和我說明,我會直接封掉IP段。
原文鏈接: 點我跳轉 。