java怎么获取城市气温_获取城市天气数据
中華萬(wàn)年歷API
抓包中華萬(wàn)年歷得到的接口(JSON):
http://wthrcdn.etouch.cn/weather_mini?city=北京
通過(guò)城市名字獲得天氣數(shù)據(jù),json數(shù)據(jù)
http://wthrcdn.etouch.cn/weather_mini?citykey=101010100
通過(guò)城市id獲得天氣數(shù)據(jù),json數(shù)據(jù)
數(shù)據(jù)和中國(guó)天氣網(wǎng)(www.weather.com.cn)一致
數(shù)據(jù):
{
"desc": "OK",
"status": 1000,
"data": {
"wendu": "22",
"ganmao": "各項(xiàng)氣象條件適宜,無(wú)明顯降溫過(guò)程,發(fā)生感冒機(jī)率較低。",
"forecast": [{
"fengxiang": "南風(fēng)",
"fengli": "3-4級(jí)",
"high": "高溫 26℃",
"type": "多云",
"low": "低溫 13℃",
"date": "28日星期四"
},
{
"fengxiang": "無(wú)持續(xù)風(fēng)向",
"fengli": "微風(fēng)級(jí)",
"high": "高溫 28℃",
"type": "多云",
"low": "低溫 15℃",
"date": "29日星期五"
},
{
"fengxiang": "無(wú)持續(xù)風(fēng)向",
"fengli": "微風(fēng)級(jí)",
"high": "高溫 31℃",
"type": "晴",
"low": "低溫 15℃",
"date": "30日星期六"
},
{
"fengxiang": "無(wú)持續(xù)風(fēng)向",
"fengli": "微風(fēng)級(jí)",
"high": "高溫 29℃",
"type": "多云",
"low": "低溫 20℃",
"date": "1日星期天"
},
{
"fengxiang": "北風(fēng)",
"fengli": "4-5級(jí)",
"high": "高溫 26℃",
"type": "小到中雨",
"low": "低溫 13℃",
"date": "2日星期一"
}],
"yesterday": {
"fl": "微風(fēng)",
"fx": "無(wú)持續(xù)風(fēng)向",
"high": "高溫 19℃",
"type": "小雨",
"low": "低溫 12℃",
"date": "27日星期三"
},
"aqi": "118",
"city": "北京"
}
}
XML
http://wthrcdn.etouch.cn/WeatherApi?citykey=101010100
通過(guò)城市id獲得天氣數(shù)據(jù),xml文件數(shù)據(jù),
當(dāng)錯(cuò)誤時(shí)會(huì)有節(jié)點(diǎn)
http://wthrcdn.etouch.cn/WeatherApi?city=北京
通過(guò)城市名字獲得天氣數(shù)據(jù),xml文件數(shù)據(jù)
數(shù)據(jù):
北京
18:45
22
2級(jí)
33%
東南風(fēng)
05:19
19:06
118
61
兒童、老年人及心臟、呼吸系統(tǒng)疾病患者人群應(yīng)減少長(zhǎng)時(shí)間或高強(qiáng)度戶外鍛煉
輕度污染
臭氧8小時(shí)
185
1
101
4
24
18:00:00
27日星期三
高溫 19℃
低溫 12℃
小雨
無(wú)持續(xù)風(fēng)向
微風(fēng)
陰
無(wú)持續(xù)風(fēng)向
微風(fēng)
28日星期四
高溫 26℃
低溫 13℃
多云
南風(fēng)
3-4級(jí)
多云
無(wú)持續(xù)風(fēng)向
微風(fēng)級(jí)
29日星期五
高溫 28℃
低溫 15℃
多云
無(wú)持續(xù)風(fēng)向
微風(fēng)級(jí)
晴
無(wú)持續(xù)風(fēng)向
微風(fēng)級(jí)
30日星期六
高溫 31℃
低溫 15℃
晴
無(wú)持續(xù)風(fēng)向
微風(fēng)級(jí)
多云
無(wú)持續(xù)風(fēng)向
微風(fēng)級(jí)
1日星期天
高溫 29℃
低溫 20℃
多云
無(wú)持續(xù)風(fēng)向
微風(fēng)級(jí)
小雨
無(wú)持續(xù)風(fēng)向
微風(fēng)級(jí)
2日星期一
高溫 26℃
低溫 13℃
小到中雨
北風(fēng)
4-5級(jí)
多云
北風(fēng)
3-4級(jí)
晨練指數(shù)
適宜
天氣不錯(cuò),空氣清新,是您晨練的大好時(shí)機(jī),建議不同年齡段的人們積極參加戶外健身活動(dòng)。
舒適度
較舒適
白天天氣晴好,您在這種天氣條件下,會(huì)感覺(jué)早晚涼爽、舒適,午后偏熱。
穿衣指數(shù)
舒適
建議著長(zhǎng)袖T恤、襯衫加單褲等服裝。年老體弱者宜著針織長(zhǎng)袖襯衫、馬甲和長(zhǎng)褲。
感冒指數(shù)
少發(fā)
各項(xiàng)氣象條件適宜,無(wú)明顯降溫過(guò)程,發(fā)生感冒機(jī)率較低。
晾曬指數(shù)
適宜
天氣不錯(cuò),適宜晾曬。趕緊把久未見(jiàn)陽(yáng)光的衣物搬出來(lái)吸收一下太陽(yáng)的味道吧!
旅游指數(shù)
適宜
天氣較好,但絲毫不會(huì)影響您出行的心情。溫度適宜又有微風(fēng)相伴,適宜旅游。
紫外線強(qiáng)度
中等
屬中等強(qiáng)度紫外線輻射天氣,外出時(shí)建議涂擦SPF高于15、PA+的防曬護(hù)膚品,戴帽子、太陽(yáng)鏡。
洗車(chē)指數(shù)
較適宜
較適宜洗車(chē),未來(lái)一天無(wú)雨,風(fēng)力較小,擦洗一新的汽車(chē)至少能保持一天。
運(yùn)動(dòng)指數(shù)
較適宜
天氣較好,戶外運(yùn)動(dòng)請(qǐng)注意防曬,推薦您在室內(nèi)進(jìn)行低強(qiáng)度運(yùn)動(dòng)。
約會(huì)指數(shù)
適宜
天氣較好,和戀人一起徜徉于熙攘人群中或漫步于柔軟草地上,都是不錯(cuò)的主意哦。
雨傘指數(shù)
不帶傘
天氣較好,不會(huì)降水,因此您可放心出門(mén),無(wú)須帶雨傘。
java code:
package com.topsports.util;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.zip.GZIPInputStream;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
/**
* 天氣預(yù)報(bào)工具類(lèi)(調(diào)用中華萬(wàn)年歷接口獲取)
* @author sun.xh
* @date 2018-08-02
*/
public class WeatherUtil {
private static Logger logger = LogManager.getLogger(WeatherUtil.class);
/**
* 獲取今天實(shí)時(shí)天氣
* @param cityName 城市名稱(chēng)
* @return type
*/
public static String getTodayWeather(String cityName){
String res = null;
try {
JSONArray array = getWeather(cityName);
if (array != null && !array.isEmpty()) {
JSONObject today = array.getJSONObject(0);
res = today.getString("type");
}
} catch (Exception e) {
logger.error("獲取天氣失敗", e);
}
return res;
}
/**
* 獲取最近幾天天氣 + 昨日天氣
* @param cityName
* @return jsonArray
*/
public static JSONArray getWeather(String cityName) {
String url = "http://wthrcdn.etouch.cn/weather_mini?city=" + cityName;
JSONArray array = null;
CloseableHttpClient httpClient = HttpClients.createDefault();
try {
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
String result = getJsonStringFromGZIP(httpResponse);// 獲取到解壓縮之后的字符串
JSONObject jsonData = JSONObject.fromObject(result);
logger.info("請(qǐng)求天氣接口返回狀態(tài)如下:cityName:{}, status:{},desc:{}", cityName, jsonData.getString("status"), jsonData.getString("desc"));
if (jsonData.getString("desc").equals("OK")) {
JSONObject data = jsonData.getJSONObject("data");
array = data.getJSONArray("forecast");
}
} catch (Exception e) {
logger.error("獲取一周天氣數(shù)據(jù)失敗", e);
} finally {
try {
httpClient.close();
} catch (IOException e) {
logger.error("IO異常", e);
}
}
return array;
}
/**
* 解壓縮gzip
* @param response
* @return
*/
private static String getJsonStringFromGZIP(HttpResponse response) {
String jsonString = null;
try {
InputStream is = response.getEntity().getContent();
BufferedInputStream bis = new BufferedInputStream(is);
bis.mark(2);
// 取前兩個(gè)字節(jié)
byte[] header = new byte[2];
int result = bis.read(header);
// reset輸入流到開(kāi)始位置
bis.reset();
// 判斷是否是GZIP格式
int headerData = getShort(header);
if (result != -1 && headerData == 0x1f8b) {
is = new GZIPInputStream(bis);
} else {
is = bis;
}
InputStreamReader reader = new InputStreamReader(is, "utf-8");
char[] data = new char[100];
int readSize;
StringBuffer sb = new StringBuffer();
while ((readSize = reader.read(data)) > 0) {
sb.append(data, 0, readSize);
}
jsonString = sb.toString();
bis.close();
reader.close();
} catch (Exception e) {
logger.error("解壓JSON異常", e);
}
return jsonString;
}
private static int getShort(byte[] data) {
return (int) ((data[0] << 8) | data[1] & 0xFF);
}
public static void main(String[] args) {
//測(cè)試獲取實(shí)時(shí)天氣
String res = getTodayWeather("深圳");
System.out.println(res);
}
}
總結(jié)
以上是生活随笔為你收集整理的java怎么获取城市气温_获取城市天气数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ecplice java run_jav
- 下一篇: php while for 性能,php