前提:
1,使用鸿洋大神的okhttputils网络框架请求数据。okhttputils地址
2,使用GSON解析json数据。(在AndroidStudio下载GsonFormat插件,将JSON数据字符串自动生成为一个JavaBean,再用Gson来解析)
3,使用postman查看json数据。(在官网下载postman并百度该软件的用法)
数据准备:(以和风天气提供的数据为例)
1,到和风天气的官网去注册一个账号,注册完成认证通过后去控制台找到自己的认证key。
2,去和风天气的官网的开发文档,天气API接口说明处查询自己需要的 “请求URL”。
注:(1) parameters可以根据自己的需要来接入。不同的接口URL不同,比如选择实况天气接口则选择其对应的URL。本例中选择的是 3-10天天气预报接口。
(2) 比如本例中的请求URL为:
https://free-api.heweather.com/s6/weather/forecast?key=613a5123d89a4f64b9eb3a62580f0d8b&location=CN101060705
这里的key为自己认证的key,location为要查询的城市的id。(问号后的参数可根据自身需求修改,但是key一定要有)
3,请求URL得到了,可以在postman里查看我们本例中要请求的数据了。
(1) 选择GET将URL输入,点击Send,便可以在下方看到需要请求的数据了。
请求数据的URL准备好了,接下来就是请求和解析数据了。
请求和解析数据
1,配置okhttputils和GSON
(1)在model的build.gradle里添加依赖:
dependencies {
......
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.zhy:okhttputils:2.6.2'
}
(2)新建MyApplication.java文件:用来配置okhttputils。
public class MyApplication extends Application{
/**系统上下文*/
private static Context mContext;
@Override
public void onCreate() {
super.onCreate();
mContext = getApplicationContext();
initOkHttp();
}
/**获取系统上下文:*/
public static Context getAppContext()
{
return mContext;
}
/**
* 配置OkhttpClient
*/
private void initOkHttp() {
OkHttpClient okHttpClient = new OkHttpClient.Builder()
// .addInterceptor(new LoggerInterceptor("TAG"))
.connectTimeout(10000L, TimeUnit.MILLISECONDS)
.readTimeout(10000L, TimeUnit.MILLISECONDS)
//其他配置
.build();
OkHttpUtils.initClient(okHttpClient);
}
}
注:记得在AndroidManifest.xml中配置MyApplication。
<application
android:name=".application.MyApplication"
......
</application>
2,将JSON数据生成为一个JavaBean
(1)新建一个WeatherBean.java文件:该类中的代码可以使用AndroidStudio的插件GsonFormat一键生成。
使用方法如下:1,在android studio安装GsonFormat插件。
2,在Code中选中Generate,再选中GsonFormat。(AS的版本为3.1.2)
3,将获取到的JSON数据直接复制到里面去就可以一键生成所需要的JavaBean
点击两次ok即可生成代码。代码如下:
WeatherBean.java
public class WeatherBean {
private List<HeWeather6Bean> HeWeather6;
public List<HeWeather6Bean> getHeWeather6() {
return HeWeather6;
}
public void setHeWeather6(List<HeWeather6Bean> HeWeather6) {
this.HeWeather6 = HeWeather6;
}
public static class HeWeather6Bean {
/**
* basic : {"cid":"CN101060705","location":"西安","parent_city":"辽源","admin_area":"吉林","cnty":"中国","lat":"42.92041397","lon":"125.15142059","tz":"+8.00"}
* update : {"loc":"2018-12-13 18:46","utc":"2018-12-13 10:46"