今天闲来无事,通过和风天气接口实现了一个简单的获取当前时间点的天气情况,话不多说,直接给大家展示代码,功能是挺简单的,
1、获取数据的实体类:
package wxc.com.weatheer;
import java.util.List;
/**
* Created by 宝 on 2017/9/16.
*/
public class WeatherBean {
/**
* basic : {"city":"西青","cnty":"中国","id":"CN101030500","lat":"39.13944626","lon":"117.01224518","update":{"loc":"2017-09-16 07:46","utc":"2017-09-15 23:46"}}
* now : {"cond":{"code":"101","txt":"多云"},"fl":"24","hum":"72","pcpn":"0","pres":"1014","tmp":"23","vis":"10","wind":{"deg":"172","dir":"南风","sc":"微风","spd":"7"}}
* status : ok
*/
private List<HeWeather5Bean> HeWeather5;
public List<HeWeather5Bean> getHeWeather5() {
return HeWeather5;
}
public void setHeWeather5(List<HeWeather5Bean> HeWeather5) {
this.HeWeather5 = HeWeather5;
}
public static class HeWeather5Bean {
/**
* city : 西青
* cnty : 中国
* id : CN101030500
* lat : 39.13944626
* lon : 117.01224518
* update : {"loc":"2017-09-16 07:46","utc":"2017-09-15 23:46"}
*/
private BasicBean basic;
/**
* cond : {"code":"101","txt":"多云"}
* fl : 24
* hum : 72
* pcpn : 0
* pres : 1014
* tmp : 23
* vis : 10
* wind : {"deg":"172","dir":"南风","sc":"微风","spd":"7"}
*/
private NowBean now;
private String status;
public BasicBean getBasic() {
return basic;
}
public void setBasic(BasicBean basic) {
this.basic = basic;
}
public NowBean getNow() {
return now;
}
public void setNow(NowBean now) {
this.now = now;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public static class BasicBean {
private String city;
private String cnty;
private String id;
private String lat;
private String lon;
/**
* loc : 2017-09-16 07:46
* utc : 2017-09-15 23:46
*/
private UpdateBean update;
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCnty() {
return cnty;
}
public void setCnty(String cnty) {
this.cnty = cnty;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getLat() {
return lat;
}
public void setLat(String lat) {
this.lat = lat;
}
public String getLon() {
return lon;
}
public void setLon(String lon) {
this.lon = lon;
}
public UpdateBean getUpdate() {
return update;
}
public void setUpdate(UpdateBean update) {
this.update = update;
}
public static class UpdateBean {
private String loc;
private String utc;
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
public String getUtc() {
return utc;
}
public void setUtc(String utc) {
this.utc = utc;
}
}
}
public static class NowBean {
/**
* code : 101
* txt : 多云
*/
private CondBean cond;
private String fl;
private String hum;
private String pcpn;
private String pres;
private String tmp;
private String vis;
/**
* deg : 172
* dir : 南风
* sc : 微风
* spd : 7
*/
private WindBean wind;
public CondBean getCond() {
return cond;
}
public void setCond(CondBean cond) {
this.cond = cond;
}
public String getFl() {
return fl;
}
public void setFl(String fl) {
this.fl = fl;
}
public String getHum() {
return hum;
}
public void setHum(String hum) {
this.hum = hum;
}
public String getPcpn() {
return pcpn;
}
public void setPcpn(String pcpn) {
this.pcpn = pcpn;
}
public String getPres() {
return pres;
}
public void setPres(String pres) {
this.pres = pres;
}
public String getTmp() {
return tmp;
}
public void setTmp(String tmp) {
this.tmp = tmp;
}
public String getVis() {
return vis;
}
public void setVis(String vis) {
this.vis = vis;
}
public WindBean getWind() {
return wind;
}
public void setWind(WindBean wind) {
this.wind = wind;
}
public static class CondBean {
private String code;
private String txt;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getTxt() {
return txt;
}
public void setTxt(String txt) {
this.txt = txt;
}
}
public static class WindBean {
private String deg;
private String dir;
private String sc;
private String spd;
public String getDeg() {
return deg;
}
public void setDeg(String deg) {
this.deg = deg;
}
public String getDir() {
return dir;
}
public void setDir(String dir) {
this.dir = dir;
}
public String getSc() {
return sc;
}
public void setSc(String sc) {
this.sc = sc;
}
public String getSpd() {
return spd;
}
public void setSpd(String spd) {
this.spd = spd;
}
}
}
}
}
2、下面是主要代码
和风的接口,有免费的和收费的,这里使用的是免费的
private String url = "https://free-api.heweather.com/v5/now?city=CN101030500&key=XXXXXX";
下面通过解析数据获取信息
try {
// /创建okHttpClient对象
OkHttpClient mOkHttpClient = new OkHttpClient();
//创建一个Request
final Request request = new Request.Builder()
.url(url)
.build();
//new call
Call call = mOkHttpClient.newCall(request);
//请求加入调度
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String string = response.body().string();
Gson gosn = new Gson();
w = new ArrayList<WeatherBean>();
WeatherBean bean =gosn.fromJson(string,WeatherBean.class);
w.add(bean);
runOnUiThread(new Runnable() {
@Override
public void run() {
String citi = w.get(0).getHeWeather5().get(0).getBasic().getCity();
String cn = w.get(0).getHeWeather5().get(0).getBasic().getCnty();
String updateTime = w.get(0).getHeWeather5().get(0).getBasic().getUpdate().getLoc();
String text = w.get(0).getHeWeather5().get(0).getNow().getCond().getTxt();
String tep = w.get(0).getHeWeather5().get(0).getNow().getTmp();
t1.setText(citi);
t2.setText(cn);
t3.setText(updateTime);
t4.setText(text);
t5.setText(tep);
}
});
}
});
} catch (Exception e) {
e.printStackTrace();
}
这样就实现了一个简单的展示当前天气的功能,根据自己的需求,要想多长时间更新一次就可以了,值得注意的是,免费的接口每天请求的数量是有限制的,
源代码下载:http://download.csdn.net/download/chen_xiaobao/10043393