首页 > 编程语言 >java使用webservice 调用天气预报接口

java使用webservice 调用天气预报接口

时间:2024-09-26 21:21:09浏览次数:20  
标签:java webservice connection API new 天气预报 HttpURLConnection String

市场上有许多免费的和付费的天气预报API,例如OpenWeatherMap、WeatherAPI、Weatherstack等。这里我们以OpenWeatherMap为例,因为它提供了广泛的天气数据和相对简单的API接口。

访问OpenWeatherMap的官网(https://openweathermap.org/) ,注册一个账户,并创建一个API密钥(APIkey)。这个密钥将用于你的请求中,以验证身份和访问权限。

可以使用java.net.HttpURLConnection,或者Apache HttpClient、OkHttp等来调用接口。

1.使用java.net.HttpURLConnection来调用OpenWeatherMap API获取天气预报的:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class WeatherClient {

    public static void main(String[] args) {
        try {
            String apiKey = "你的API密钥";
            String cityName = "Beijing";
            String urlString = "http://api.openweathermap.org/data/2.5/weather?q=" + cityName + "&appid=" + apiKey + "&units=metric";

            URL url = new URL(urlString);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();

            connection.setRequestMethod("GET");
            connection.setRequestProperty("Accept", "application/json");

            if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
                throw new RuntimeException("Failed : HTTP error code : " + connection.getResponseCode());
            }

            BufferedReader br = new BufferedReader(new InputStreamReader((connection.getInputStream())));

            String output;
            System.out.println("Output from Server .... \n");
            while ((output = br.readLine()) != null) {
                System.out.println(output);
            }

            connection.disconnect();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

2.使用OkHttp库示例:

OkHttpClient client = new OkHttpClient();

String url = "http://api.openweathermap.org/data/2.5/weather?q=" + cityName + "&appid=" + apiKey + "&units=metric";

Request request = new Request.Builder()
    .url(url)
    .build();

try (Response response = client.newCall(request).execute()) {
    if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

    System.out.println(response.body().string());
} catch (IOException e) {
    e.printStackTrace();
}

 

java使用webservice 调用天气预报接口_API

标签:java,webservice,connection,API,new,天气预报,HttpURLConnection,String
From: https://blog.51cto.com/u_15266301/12121640

相关文章

  • 【Py/Java/C++三种语言OD独家2024E卷真题】20天拿下华为OD笔试之【DFS/BFS】2024E-开
    可上欧弟OJ系统练习华子OD、大厂真题绿色聊天软件戳oj1441了解算法冲刺训练(备注【CSDN】否则不通过)文章目录相关推荐阅读题目描述与示例题目描述输入输出示例一输入输出说明示例二输入输出解题思路代码解法一:BFSpythonjavacpp......
  • 构建 JavaScript 代码:可读性和可维护性的最佳实践
    欢迎回到我们的javascript世界之旅!在这篇博文中,我们将深入探讨构建javascript代码的基本方面。正确的代码结构对于可读性、可维护性和协作至关重要。我们将介绍代码结构、语句、分号和注释。让我们开始吧!代码结构结构良好的javascript代码库易于阅读、理解和维护。以......
  • 如何打造Java SpringBoot民宿山庄农家乐系统?2025最新毕业设计攻略
    ✍✍计算机毕业编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......
  • 7-2 jmu-Java-04面向对象进阶-01-接口-Comparable
    编写实现Comparable接口的PersonSortable类,使其按name以及age排序1.编写PersonSortable类属性:privatename(String)、privateage(int)有参构造函数:参数为name,agetoString函数:返回格式为:name-age实现Comparable接口:实现先对name升序排序,如果name相同则对age进行升序排序......
  • java练习生第二练
    不可变集合不可变集合(ImmutableCollections)在编程中指的是一旦创建,其内容(如元素、大小等)就不能被修改的集合类型。这类集合对于线程安全非常有用,因为它们自然避免了多线程环境下因并发修改而产生的竞争条件和错误。同时,它们也有助于设计不可变对象,这对于确保数据一致性和简......
  • Java毕业设计-基于SSM框架的宠物领养系统项目实战(附源码+论文)
    大家好!我是岛上程序猿,感谢您阅读本文,欢迎一键三连哦。......