日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

android xml 解析天气,Retrofit2解析天气API XML接口

發布時間:2024/9/19 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android xml 解析天气,Retrofit2解析天气API XML接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

栗子:

友情提示:這是本人初次接觸的記錄篇,有坑是正常現象,歡迎指出。

具體返回格式:

北京

13:35

29

4級

28%

南風

04:59

19:23

72

52

極少數敏感人群應減少戶外活動

顆粒物(PM2.5)

162

1

90

9

33

13:00:00

10101

2017-05-04 19:30:00

15日星期一

高溫 28℃

低溫 15℃

南風

微風

多云

南風

微風

16日星期二

高溫 32℃

低溫 17℃

多云

南風

3-4級

西北風

微風級

17日星期三

高溫 34℃

低溫 19℃

南風

微風級

南風

微風級

18日星期四

高溫 35℃

低溫 22℃

南風

微風級

多云

南風

微風級

19日星期五

高溫 35℃

低溫 22℃

多云

南風

微風級

南風

微風級

20日星期六

高溫 34℃

低溫 21℃

南風

3-4級

多云

南風

微風級

晨練指數

較適宜

早晨氣象條件較適宜晨練,但風力稍大,晨練時請注意選擇避風的地點,避免迎風鍛煉。

舒適度

較不舒適

白天天氣多云,同時會感到有些熱,不很舒適。

穿衣指數

炎熱

天氣炎熱,建議著短衫、短裙、短褲、薄型T恤衫等清涼夏季服裝。

感冒指數

少發

各項氣象條件適宜,發生感冒機率較低。但請避免長期處于空調房間中,以防感冒。

晾曬指數

適宜

天氣不錯,適宜晾曬。趕緊把久未見陽光的衣物搬出來吸收一下太陽的味道吧!

旅游指數

適宜

天氣較好,溫度稍高,幸好風稍大,會緩解稍熱的天氣。適宜旅游,可不要錯過機會呦!

紫外線強度

中等

屬中等強度紫外線輻射天氣,外出時建議涂擦SPF高于15、PA+的防曬護膚品,戴帽子、太陽鏡。

洗車指數

較適宜

較適宜洗車,未來一天無雨,風力較小,擦洗一新的汽車至少能保持一天。

運動指數

較適宜

天氣較好,但風力較大,推薦您進行室內運動,若在戶外運動請注意防風。

約會指數

較不適宜

天氣較好,且室外有風,外出約會可能會讓戀人受些苦,最好在溫暖的室內促膝談心。

雨傘指數

不帶傘

天氣較好,不會降水,因此您可放心出門,無須帶雨傘。

錯誤回調:

400

Check the parameters.

步驟一:

導包:

api 'com.squareup.retrofit2:retrofit:2.4.0'

api 'com.squareup.retrofit2:converter-simplexml:2.4.0'

步驟二:

開始解析創建對象,要解析你就得先完成這步,不然你解析成空氣啊。

完全解析:

這邊為了省事直接寫在一個文件中了,然后有點長,但這是為了方便你們Copy.

注意事項:解析對象不能是內部類

import org.simpleframework.xml.Element;

import org.simpleframework.xml.ElementList;

import org.simpleframework.xml.Root;

import java.util.List;

/**

* Created by 奈蜇 on 2018-07-25.

* RespWeather

*/

@Root(name = "resp",strict = false)

public class RespWeather {

@Element(name = "city",required = false)

String city;

@Element(name = "updatetime",required = false)

String updatetime;

@Element(name = "wendu",required = false)

int wendu;

@Element(name = "fengli",required = false)

String fengli;

@Element(name = "shidu",required = false)

String shidu;

@Element(name = "fengxiang",required = false)

String fengxiang;

@Element(name = "sunrise_1",required = false)

String sunrise_1;

@Element(name = "sunset_1",required = false)

String sunset_1;

@Element(name = "sunrise_2",required = false)

String sunrise_2;

@Element(name = "sunset_2",required = false)

String sunset_2;

@Element(name = "environment",required = false)

Environment environment;

@Element(name = "alarm",required = false)

Alarm alarm;

@Element(name = "yesterday",required = false)

Yesterday yesterday;

@Element(name = "forecast",required = false)

Forecast forecast;

@Element(name = "zhishus",required = false)

Zhishus zhishus;

@Element(name = "status",required = false)

int status;

@Element(name = "error",required = false)

String error;

public String getCity() {

return city;

}

public void setCity(String city) {

this.city = city;

}

public String getUpdatetime() {

return updatetime;

}

public void setUpdatetime(String updatetime) {

this.updatetime = updatetime;

}

public int getWendu() {

return wendu;

}

public void setWendu(int wendu) {

this.wendu = wendu;

}

public String getFengli() {

return fengli;

}

public void setFengli(String fengli) {

this.fengli = fengli;

}

public String getShidu() {

return shidu;

}

public void setShidu(String shidu) {

this.shidu = shidu;

}

public String getFengxiang() {

return fengxiang;

}

public void setFengxiang(String fengxiang) {

this.fengxiang = fengxiang;

}

public String getSunrise_1() {

return sunrise_1;

}

public void setSunrise_1(String sunrise_1) {

this.sunrise_1 = sunrise_1;

}

public String getSunset_1() {

return sunset_1;

}

public void setSunset_1(String sunset_1) {

this.sunset_1 = sunset_1;

}

public String getSunrise_2() {

return sunrise_2;

}

public void setSunrise_2(String sunrise_2) {

this.sunrise_2 = sunrise_2;

}

public String getSunset_2() {

return sunset_2;

}

public void setSunset_2(String sunset_2) {

this.sunset_2 = sunset_2;

}

public Environment getEnvironment() {

return environment;

}

public void setEnvironment(Environment environment) {

this.environment = environment;

}

public Alarm getAlarm() {

return alarm;

}

public void setAlarm(Alarm alarm) {

this.alarm = alarm;

}

public Yesterday getYesterday() {

return yesterday;

}

public void setYesterday(Yesterday yesterday) {

this.yesterday = yesterday;

}

public Forecast getForecast() {

return forecast;

}

public void setForecast(Forecast forecast) {

this.forecast = forecast;

}

public Zhishus getZhishus() {

return zhishus;

}

public void setZhishus(Zhishus zhishus) {

this.zhishus = zhishus;

}

public int getStatus() {

return status;

}

public void setStatus(int status) {

this.status = status;

}

public String getError() {

return error;

}

public void setError(String error) {

this.error = error;

}

}

@Root(name = "environment",strict = false)

class Environment{

@Element(name = "aqi",required = false)

int aqi;

@Element(name = "pm25",required = false)

int pm25;

@Element(name = "suggest",required = false)

String suggest;

@Element(name = "quality",required = false)

String quality;

@Element(name = "MajorPollutants",required = false)

String MajorPollutants;

@Element(name = "o3",required = false)

int o3;

@Element(name = "co",required = false)

int co;

@Element(name = "pm10",required = false)

int pm10;

@Element(name = "so2",required = false)

int so2;

@Element(name = "no2",required = false)

int no2;

@Element(name = "time",required = false)

String time;

public int getAqi() {

return aqi;

}

public void setAqi(int aqi) {

this.aqi = aqi;

}

public int getPm25() {

return pm25;

}

public void setPm25(int pm25) {

this.pm25 = pm25;

}

public String getSuggest() {

return suggest;

}

public void setSuggest(String suggest) {

this.suggest = suggest;

}

public String getQuality() {

return quality;

}

public void setQuality(String quality) {

this.quality = quality;

}

public String getMajorPollutants() {

return MajorPollutants;

}

public void setMajorPollutants(String majorPollutants) {

MajorPollutants = majorPollutants;

}

public int getO3() {

return o3;

}

public void setO3(int o3) {

this.o3 = o3;

}

public int getCo() {

return co;

}

public void setCo(int co) {

this.co = co;

}

public int getPm10() {

return pm10;

}

public void setPm10(int pm10) {

this.pm10 = pm10;

}

public int getSo2() {

return so2;

}

public void setSo2(int so2) {

this.so2 = so2;

}

public int getNo2() {

return no2;

}

public void setNo2(int no2) {

this.no2 = no2;

}

public String getTime() {

return time;

}

public void setTime(String time) {

this.time = time;

}

}

@Root(name = "alarm",strict = false)

class Alarm{

@Element(name = "cityKey",required = false)

int cityKey;

@Element(name = "cityName",required = false)

String cityName;

@Element(name = "alarmType",required = false)

String alarmType;

@Element(name = "alarmDegree",required = false)

String alarmDegree;

@Element(name = "alarmText",required = false)

String alarmText;

@Element(name = "alarm_details",required = false)

String alarm_details;

@Element(name = "standard",required = false)

String standard;

@Element(name = "suggest",required = false)

String suggest;

@Element(name = "imgUrl",required = false)

String imgUrl;

@Element(name = "time",required = false)

String time;

public int getCityKey() {

return cityKey;

}

public void setCityKey(int cityKey) {

this.cityKey = cityKey;

}

public String getCityName() {

return cityName;

}

public void setCityName(String cityName) {

this.cityName = cityName;

}

public String getAlarmType() {

return alarmType;

}

public void setAlarmType(String alarmType) {

this.alarmType = alarmType;

}

public String getAlarmDegree() {

return alarmDegree;

}

public void setAlarmDegree(String alarmDegree) {

this.alarmDegree = alarmDegree;

}

public String getAlarmText() {

return alarmText;

}

public void setAlarmText(String alarmText) {

this.alarmText = alarmText;

}

public String getAlarm_details() {

return alarm_details;

}

public void setAlarm_details(String alarm_details) {

this.alarm_details = alarm_details;

}

public String getStandard() {

return standard;

}

public void setStandard(String standard) {

this.standard = standard;

}

public String getSuggest() {

return suggest;

}

public void setSuggest(String suggest) {

this.suggest = suggest;

}

public String getImgUrl() {

return imgUrl;

}

public void setImgUrl(String imgUrl) {

this.imgUrl = imgUrl;

}

public String getTime() {

return time;

}

public void setTime(String time) {

this.time = time;

}

}

@Root(name = "yesterday",strict = false)

class Yesterday{

@Element(name = "date_1",required = false)

String date_1;

@Element(name = "high_1",required = false)

String high_1;

@Element(name = "low_1",required = false)

String low_1;

@Element(name = "day_1",required = false)

Day_1 day_1;

@Element(name = "night_1",required = false)

Night_1 night_1;

public String getDate_1() {

return date_1;

}

public void setDate_1(String date_1) {

this.date_1 = date_1;

}

public String getHigh_1() {

return high_1;

}

public void setHigh_1(String high_1) {

this.high_1 = high_1;

}

public String getLow_1() {

return low_1;

}

public void setLow_1(String low_1) {

this.low_1 = low_1;

}

public Day_1 getDay_1() {

return day_1;

}

public void setDay_1(Day_1 day_1) {

this.day_1 = day_1;

}

public Night_1 getNight_1() {

return night_1;

}

public void setNight_1(Night_1 night_1) {

this.night_1 = night_1;

}

}

@Root(name = "day_1",strict = false)

class Day_1{

@Element(name = "type_1",required = false)

String type_1;

@Element(name = "fx_1",required = false)

String fx_1;

@Element(name = "fl_1",required = false)

String fl_1;

public String getType_1() {

return type_1;

}

public void setType_1(String type_1) {

this.type_1 = type_1;

}

public String getFx_1() {

return fx_1;

}

public void setFx_1(String fx_1) {

this.fx_1 = fx_1;

}

public String getFl_1() {

return fl_1;

}

public void setFl_1(String fl_1) {

this.fl_1 = fl_1;

}

}

@Root(name = "night_1",strict = false)

class Night_1{

@Element(name = "type_1",required = false)

String type_1;

@Element(name = "fx_1",required = false)

String fx_1;

@Element(name = "fl_1",required = false)

String fl_1;

public String getType_1() {

return type_1;

}

public void setType_1(String type_1) {

this.type_1 = type_1;

}

public String getFx_1() {

return fx_1;

}

public void setFx_1(String fx_1) {

this.fx_1 = fx_1;

}

public String getFl_1() {

return fl_1;

}

public void setFl_1(String fl_1) {

this.fl_1 = fl_1;

}

}

@Root(name = "forecast",strict = false)

class Forecast{

@ElementList(name = "weather" ,inline = true )

List weatherList;

public List getWeatherList() {

return weatherList;

}

public void setWeatherList(List weatherList) {

this.weatherList = weatherList;

}

}

@Root(name = "weather",strict = false)

class Weather{

@Element(name = "date",required = false)

String date;

@Element(name = "high",required = false)

String high;

@Element(name = "low",required = false)

String low;

@Element(name = "day",required = false)

Day day;

@Element(name = "night",required = false)

Night night;

public String getDate() {

return date;

}

public void setDate(String date) {

this.date = date;

}

public String getHigh() {

return high;

}

public void setHigh(String high) {

this.high = high;

}

public String getLow() {

return low;

}

public void setLow(String low) {

this.low = low;

}

public Day getDay() {

return day;

}

public void setDay(Day day) {

this.day = day;

}

public Night getNight() {

return night;

}

public void setNight(Night night) {

this.night = night;

}

}

@Root(name = "day",strict = false)

class Day{

@Element(name = "type",required = false)

String type;

@Element(name = "fengxiang",required = false)

String fengxiang;

@Element(name = "fengli",required = false)

String fengli;

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

public String getFengxiang() {

return fengxiang;

}

public void setFengxiang(String fengxiang) {

this.fengxiang = fengxiang;

}

public String getFengli() {

return fengli;

}

public void setFengli(String fengli) {

this.fengli = fengli;

}

}

@Root(name = "night",strict = false)

class Night{

@Element(name = "type",required = false)

String type;

@Element(name = "fengxiang",required = false)

String fengxiang;

@Element(name = "fengli",required = false)

String fengli;

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

public String getFengxiang() {

return fengxiang;

}

public void setFengxiang(String fengxiang) {

this.fengxiang = fengxiang;

}

public String getFengli() {

return fengli;

}

public void setFengli(String fengli) {

this.fengli = fengli;

}

}

@Root(name = "zhishus",strict = false)

class Zhishus{

@ElementList(name = "zhishu" ,inline = true )

List zhishuList;

public List getZhishuList() {

return zhishuList;

}

public void setZhishuList(List zhishuList) {

this.zhishuList = zhishuList;

}

}

@Root(name = "zhishu",strict = false)

class Zhishu{

@Element(name = "name",required = false)

String name;

@Element(name = "value",required = false)

String value;

@Element(name = "detail",required = false)

String detail;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getValue() {

return value;

}

public void setValue(String value) {

this.value = value;

}

public String getDetail() {

return detail;

}

public void setDetail(String detail) {

this.detail = detail;

}

}

好了,看了的同志肯定有這樣的疑問:

@Root(name = "resp",strict = false)

@Element(name = "city",required = false)

@ElementList(name = "weather" ,inline = true )

這些注解都是什么意思:

我這邊簡單描述下:使用了retrofit2的simplexml插件,然后都是字面意思。

@Root : 根節點

@Element :元素

@ElementList :元素列表

name="XXXX":是指,在xml中的名字,必須完全相同。

strict = false:xml中有元素,而實體類中沒有的時候設置為false.

required = false:實體類中有,xml中沒有,且聲明為@Element的元素(個人感覺都加上吧,防止xml數據變化)

inline = true:ElementList的一個屬性,由于ElementList包了一層,如果為false將不能解析。

步驟三:

寫一個WeatherService接口,Retrofit2需要用到

import retrofit2.Call;

import retrofit2.http.GET;

import retrofit2.http.Query;

/**

* Created by 奈蜇 on 2018-07-25.

* WeatherService

*/

public interface WeatherService {

@GET("open/api/weather/xml.shtml")

Call getRespWeather(@Query("city") String city);

}

請求:

private void get(){

Retrofit retrofit = new Retrofit.Builder()

.baseUrl("https://www.sojson.com")

.addConverterFactory(SimpleXmlConverterFactory.create())

.build();

WeatherService service = retrofit.create(WeatherService.class);

service.getRespWeather("北京").enqueue(new Callback() {

@Override

public void onResponse(Call call, Response response) {

if(response.isSuccessful()){

RespWeather respWeather = response.body();

Log.d(TAG,respWeather.toString());

}else {

Log.d(TAG, "請求失敗!");

}

}

@Override

public void onFailure(Call call, Throwable t) {

Log.d(TAG, "請求失敗!");

}

});

}

好了,Debug看下結果如何

結果

我們可以看到除了xml中沒有的元素是null,其他都解析成功

總結

以上是生活随笔為你收集整理的android xml 解析天气,Retrofit2解析天气API XML接口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。