【Android】使用和风天气API获取天气数据吧!(天气预报系列之一)

【Android】使用和风天气API获取天气数据吧!(天气预报系列之一)

古话说得好,要有天气预报,首先需要有天气,和预报。

今天给大家介绍一个好用的天气预报API:和风天气。以及webAPI的使用方法~(和风天气打钱)

和风天气网址:和风天气 | 商业气象服务商, 天气预报,灾害预警,台风路径,卫星云图,天气API/SDK/APP, 天气插件, 历史天气, 气象可视化 (qweather.com)

(广告位招租)

首先我们需要注册一个和风天气账号(要不干脆从盘古开天辟地开始讲?)

点击这个,进入api的控制台。

image-20240908210034448

点击这个,进入项目管理。

image-20240908210119450

而后创建项目。

image-20240908214732418

按图设置即可,首先设置项目名称,而后设置免费订阅(这里免费订阅不可以选是因为笔者已经创建过一个免费订阅的项目)

最后设置Key为Web API,那可能有同学要问了,既然是Android的项目,为什么不用Android SDK呢?

(不用Web API怎么练习okHttp?)

配置好了之后我们可以得到:

image-20240908214945169

当当~

直接点击KEY下方的查看就可以找到你的KEY啦,这个KEY主要是用于计算账户请求次数的,和风天气一天一千次还是很容易用完的,大家写项目的时候一定要记得别写死循环,一下子把天气请求次数用光了。

项目当中

完成了上述操作,我们就可以进入Android Studio,写一个天气请求的工具类。

我们边进入编译器,边打开和风天气的开发文档。

image-20240908215918244

网络请求的发出,首先要拼接一个URL字符串。字符串的可选参数如上。

首先定义好KEY和基础的URL:

private static final String KEY = "114514";
    private static final String BASE_URL = "https://devapi.qweather.com/v7/weather/";

而后开始写方法:

我这里使用OkHttp作为请求类:

public static String getNowWeatherInfo(String locationID) {
   
        String resultResponse = "";
        String locationUrl = BASE_URL + "now" + "?" + "key=" + KEY + "&" +"location=" + locationID
                + "&" + "lang=" + "en";
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
                .url(locationUrl)
                .build();
        try {
   
            Response response = client.newCall(request).execute();
            if (response.isSuccessful()) {
   
                resultResponse = response.body().string();
                Log.d(TAG, "getNowWeatherInfo: " + resultResponse);
            }
        } catch (IOException e) {
   
            Log.d(TAG, "getNowWeatherInfo: yichang");
        }
        return resultResponse;
    }
  1. 初始化变量
    • 初始化一个空字符串resultResponse,用于存储从API获取的天气信息。
  2. 构建请求URL
    • 构建一个请求URL,这个URL由基础URL(BASE_URL),API的端点(now),以及查询参数组成。查询参数包括API密钥(KEY),地点ID(locationID),以及请求的语言(en表示英语)。
  3. 创建HTTP客户端
    • 创建一个OkHttpClient实例,用于发起网络请求。
  4. 构建请求对象
    • 使用OkHttpClient构建一个Request对象,指定要请求的URL。
  5. 发起网络请求
    • 使用try块来捕获可能发生的IOException
    • 通过OkHttpClient发起网络请求,并获取响应。
  6. 处理响应
    • 检查响应是否成功(response.isSuccessful())。
    • 如果响应成功,将响应体的内容转换为字符串,并存储在resultResponse变量中。
    • 记录响应结果到日志中。
  7. 异常处理
    • 如果在请求过程中发生IOException,捕获异常并记录异常信息到日志中。
  8. 返回结果
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值