上一章基本实现了控件的滑动效果,那么其中的数据是怎么获取的呢~
我使用的是阿里云天气预报api,使用阿里云提供的API,需要遵循以下几步:
1. 百度搜索阿里云免费天气预报API,进入阿里云云市场。
2. 这个API是免费版的,只要不是商业开发,应该可以满足我们的需求。有了API,第一步应该看的是这个API的请求方式,返回的数据格式,以及最重要的是可以请求到多少数据,比如一定要有天气质量,未来几日天气等等。下面这张图就可以看到所有你想知道的。这也是阿里云自己提供的,请求方式为get,返回类型为json,左侧还可以选择你想获取哪些类型的天气信息。这里我选的是id或地名查询7天预报。
3. 再往下拉你会发现阿里云还把每种语言下具体的请求方式示例全都列举了出来,良心网站啊!!不过我在使用它提供的示例时出现了一些问题,不知道大家会不会遇到,那么我就来说说我具体是怎么获取的吧~
1)首先,将Java请求示例中的代码拷贝下来,这里我稍微做了一下更改,因此我在使用时出现了一些问题,更改之后的是完全可以正常获取的。
final String host = "http://ali-weather.showapi.com";
final String path = "/area-to-weather";
final String method = "GET";
String appcode = "c402356e77824e7d8a23eebf6cf6d0b5";
final Map<String, String> headers = new HashMap<>();
final Map<String, String> querys = new HashMap<>();
headers.put("Authorization", "APPCODE " + appcode);
querys.put("area", "济南");
querys.put("need3HourForcast", "0");
querys.put("needAlarm", "0");
querys.put("needHourData", "1");
querys.put("needIndex", "1");
querys.put("needMoreDay", "1");
String content = "";
HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "utf-8"));
for (String s = reader.readLine(); s != null; s = reader.readLine()) {
content += s;
}
2)拷贝完这写代码,你会发现很多地方全都报红,哇是不是很兴奋。首先,先按照示例的要求去下载HttpUtils类,放到项目中。
/**
* Created by zhaoxin on 17/9/15.
*/
public class HttpUtils {
/**
* get
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @return
* @throws Exception