Java网络编程——简单的 API 调用

Get请求 - 无参数

上一章我们学习了网络的基本概念,我们知道 URL 能输入到浏览器地址栏中被打开,

那么能不能在程序中发送请求,获取结果呢?

img

例如“中国科学技术大学”的网站(https://www.ustc.edu.cn/):

网站

Java 功能非常强大,用来实现抓取网站内容也非常简便。那么是如何实现它的呢?

安装依赖库

首先,我们需要安装一个库: Okhttp3,这是一个非常流行的 HTTP 库,可以简单、快速的实现 HTTP 调用。

安装 Okhttp3 的方式是在 pom.xml 文件中增加依赖:

<!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
<dependency>
 <groupId>com.squareup.okhttp3</groupId>
 <artifactId>okhttp</artifactId>
 <version>4.1.0</version>
</dependency>

唯一<dependencies> 标签中,包含多个 <dependency> 标签,每一个 <dependency> 标签表示一个依赖库。书写时注意嵌套顺序哦。

pom.xml 文件的作用就是定义 Java 项目需要用到(或者说依赖到)哪些库。

不必纠结 pom.xml 的含义及原理,在以后的高阶课程里会详细讲。当前会写依赖标签即可。

使用详解

使用 Okhttp3 完成页面请求,需要三大步骤:

  1. 实例化 OkHttpClient。使用 OkHttpClient okHttpClient = new OkHttpClient(); 代码。
  2. 执行调用。
    1. 在执行调用之前,需要实例化一个 Request 对象,作用是定义请求的各种参数,Request request = new Request.Builder().url(url).build();
    2. 然后构建调用对象 Call call = okHttpClient.newCall(request);
    3. 最后执行调用,如果调用失败可能抛异常,所以必须抓取异常。call.execute() 就是执行调用的代码。
  3. call.execute() 返回的其实是一个执行的结果对象,调用对象的方法即可获取返回的字符串内容:call.execute().body().string();

这个过程你可以类比打电话:

  • 拿出手机,相当于实例化Request对象,
  • 拨号,相当于newCall()方法,这些都是前置操作,
  • 每说一句话,相当于执行 execute() 方法,
  • 听到对方说的话,就相当于获取返回结果 body().string()

演示的代码基本上都属于固定写法

任何时候都不要忘记 pom.xml 文件添加依赖,以及代码中使用 import 语句引入使用的类哦。

由于 Java 一切皆对象的理念,所以实际上代码量可能比大家想象的要大。

但是没关系,我们把调用的步骤封装在一个 getContent() 方法中,比较容易理解,也方便复用。大家不用太纠结,主要目标是熟练写出完整的代码。

关于输出结果

call.execute().body().string(); 可以取得服务器返回的具体内容。在下一章我们会详细学习,这里大家知道用法即可。

我们在 console 中看到的大量的文本内容,这是给浏览器识别的内容,包含了很多无效的内容。所以很多时候,我们使用程序调用 API,获取到需要的数据。

什么是 API

API 全称 Application Programming Interface,应用程序接口,API 一般是指一些预先定义的函数,目的是可以为开发人员快速访问某一程序,而无需了解和访问源码,或理解它内部工作机制的细节。

简单的讲,API 可以快速调用某个程序

这在计算机里叫做接口,我们生活中也有很多接口,比如 U 盘可以储存信息,我们访问 U 盘,只需要把 U 盘插到电脑上就可以访问,插入的 USB 接口就是一个接口,我们不需要关心它是如何实现的。

又比如电视机上有很多接口,有的连话筒,有的连视频,我们只需要直接插上对应的线就可以实现相应的功能,并不关心它的具体机制。

如果大家想要了解关于更多 API 的知识,可以点击查看这个文档

调用 API

我们看一个查询 杭州市 天气的 API

https://api.seniverse.com/v3/weather/daily.json?key=SCYrvkytJze9qyzOh&location=杭州

把这个 URL 贴到浏览器,可以看到查询返回结果为:

{
   
   "results":[{
   
   "location":{
   
   "id"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值