Android通过聚合数据API实现天气预报
使用聚合数据的API
聚合数据地址:https://www.juhe.cn/
在数据服务->生活常用->全国天气预报,申请天气预报的API使用的KEY
保存请求示例的地址,把您申请的KEY替换成自己申请的KEY,
Key获取方法,在个人中心中找到我的数据,在全国天气预报的上方的AppKey就是我们需要的KEY,将这个值保存下来
打开Android Studio创建好项目,就来安装我们需要用到的框架
记住是贼几把牛逼的开源框架(okhttputils,阿里巴巴的fastjson,这里的okhttputils需要依赖okio)
okhttputils:implementation 'com.zhy:okhttputils:2.6.2' 用于网络请求
okio:implementation 'com.squareup.okio:okio:1.11.0' 网络请求依赖
fastjson:implementation 'com.alibaba:fastjson:1.1.54.android' 解析JSON数据
安装方式:把目录浏览切换成Project,在app的build.gradle中的dependencies大花括号导入这几个框架
我们还要在安装一个插件GsonFormat,安装方式在下图:(我这里已经安装过了,显示的是Uninstall,如果没有安装显示的是绿色的背景install)
可能在安装的时候也可能会搜索不到这插件,可以可以去百度下,百度上很详细
安装完成后会提示重启Android Studio,重启就可以了。
因为这里解析JSON数据的方式都一样的,因为时间关系,我这里只写一个获取城市名称的例子
这里我们需要创建4个JAVA类文件:CONFIG、JsonBean、MainActivity、MyApplication(MainActivity是创建项目不修改文件名默认的)
避免以后修改请求URL地址不方便这里我们创建一个CONFIG的JAVA类
URl中cityname=到&中间的代码是城市的名称,可以自己修改
这里的URL是我上面所说的请求的地址就是那个地址加你申请KEY值
创建MyApplication来配置okHttpClient:
创建了MyApplication文件后一定要记得在AndroidManifest.xml添加,添加网络访问权限:
还需要一个JsonBean这个是用来解析接受到的Json数据的
创建好以后首先通过浏览器访问请求的URL地址:
访问后浏览器会返回关于这个城市的天气状况和一些其他的建议
这是复制这些返回的数据:
打开创建的JsonBean文件把鼠标放到花括号的中间位置,按ctrl+n键:弹出
在弹出的对话框中点击底部的setting按钮弹出:
在Convert Library中选择Fastjson,因为下载的框架就是Fastjson,点击ok,返回到这界面,把在浏览器复制的json数据粘贴到框框中点击ok
这个时候就会自动生成代码
来到MainActivity中:
添加initData方法,并在onCreate方法中调用
onError是在联网不成功的状态下执行的
onResponse是在联网成功的状态下执行的
因为我在 onResponse中添加了输出Log,所以当程序执行并成功访问到网络是,会返回服务端返回的数据保存在response中,
当我们的程序执行成功时应该在Logcat中打印返回的数据
看这样就代表访问成功:
下面我就开始解析返回=的json数据了
创建processData(String json)方法,在onResponse中调用
这里的cityName是一个字符串类型,因为getCity返回的是字符串类型
JsonBean JsonBean = JSON.paresObject(json,JsonBean.class); 则是通过JsonBean来解析
在Log.d("TT","城市名:" + cityName); 则是在获取到的城市名在Logcat打印出来
执行下程序:
这样就把城市名称获取出来了,获取其他的数据,同理。
注:如博客内容有错误,请联系博客更改。
Android通过聚合数据API实现天气预报的更多相关文章
- 用聚合数据API(苏州实时公交API)快速写出小程序
利用聚合数据API快速写出小程序,过程简单. 1.申请小程序账号 2.进入开发 3.调用API.比如“苏州实时公交”小程序,选择的是苏州实时公交API. 苏州实时公交API文档:https://www ...
- 使用聚合数据API查询快递数据-短信验证码-企业核名
有位朋友让我给他新开的网站帮忙做几个小功能,如下: 输入快递公司.快递单号,查询出这个快件的所有动态(从哪里出发,到了哪里) 在注册.登录等场景下的手机验证码(要求有一定的防刷策略) 通过输入公司名的 ...
- PHP 获取IP地址位置信息「聚合数据API」
聚合数据 提供了[查询IP所属区域]的服务接口,只需要以 GET 请求的方式向 API 传入 IP地址 和 APPKEY 即可获得查询结果. 这里的难点主要在于如何通过PHP获取客户端IP地址,以及如 ...
- TP5结合聚合数据API查询天气
php根据城市查询天气情况看到有人分享java的查询全国天气情况的代码,于是我想分享一个php版本的查询天气接口.免费查询天气的接口有很多,比如百度的apistore的天气api接口,我本来想采用这个 ...
- Android解析聚合数据之天气预报
免费天气预报API:https://www.juhe.cn/docs/api/id/73 ,申请APPKEY MainActivity.java <span style="font-s ...
- 利用AFNetworking框架去管理从聚合数据上面请求到的数据
数据从JSON文档中读取处理的过程称为“解码”过程,即解析和读取过程,来看一下如果利用AFNetworking框架去管理从聚合数据上面请求到的数据. 一.下载并导入AFNetworking框架 这部分 ...
- 聚合数据全国天气预报api接口
查询天气预报在APP中常用的一个常用功能,聚合数据全国天气预报api接口可以根据根据城市名/id查询天气.根据IP查询天气.据GPS坐标查询天气.查询城市天气三小时预报,并且支持全国不同城市天气预报查 ...
- Android程序之全国天气预报查询(聚合数据开发)
一.项目演示效果例如以下: 项目源码下载地址: http://pan.baidu.com/s/1pL6o5Mb password:5myq 二.使用 聚合数据SDK: (1)聚合数据官网地址:http ...
- 聚合数据天气预报API-ajax 通过城市名取数据
如需要,可申请聚合数据天气预报API:https://www.juhe.cn/docs/api/id/39,并生成AppKey. 接口地址:http://v.juhe.cn/weather/index ...
随机推荐
- javascript参数传递中处理+号
在传值过程中,如果+号也是值的一部分,那就需要对+号进行处理.否则+号会被过滤掉. 处理方式:只需要把js中传过去的+号替换成base64 编码 %2B encodeURI(str).replace( ...
- 使用 VSCode 编写 .NET Core 项目之初体验
注:本文在根据 微软官方文档指导下,根据自己的学习中整理,并不完全照搬文档,但也大体和文档学习路线相似,主要为记录学习过程. 官方学习地址: https://code.visualstudio.com ...
- php的set_time_limit()函数
set_time_limit(0); 括号里边的数字是执行时间,如果为零说明永久执行直到程序结束,如果为大于零的数字,则不管程序是否执行完成,到了设定的秒数,程序结束. 一个简单的例子,在网页里显示1 ...
- 基于ssm的poi反射bean实例
一:该例子是笔者在实际项目应用过程中,针对项目完成的一套基于poi的导入导出例子,其中一些与项目有关的代码大家直接替换成自己的需求即可. 二:笔者在项目中使用的是poi的XSSF,对应maven的po ...
- React中路由传参及接收参数的方式
注意: 路由表改变后要重启服务 方式 一: 通过params 1.路由表中 <Route path=' /s ...
- 赛码网算法: 上台阶 ( python3实现 、c实现)
上台阶 题目描述 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?注:规定从一级到一级有0种走法. 输入输入数据首先包含一个整数n(1<=n<=1 ...
- RxJava系列3(转换操作符)
RxJava系列1(简介) RxJava系列2(基本概念及使用介绍) RxJava系列3(转换操作符) RxJava系列4(过滤操作符) RxJava系列5(组合操作符) RxJava系列6(从微观角 ...
- HDU1028【母函数】
题目:给你数n,问n可以有哪些组成方案(这些n的数字个数不超过n),母函数模板题 #include <cstdio> #include <cstring> #include & ...
- 如何把百度统计代码放入JS文件中?百度统计的JS脚本原理分析
<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script&quo ...
- tkinter打招呼
import tkinter as tk #导入tkinter模块声明为tk class App:#创建一个类名称为App def __init__(self,master):#传入的参数顶层窗口在这 ...