迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

在Java中调用REST API

作者:迹忆客 最近更新:2023/08/06 浏览次数:

如果您正在开发一个允许您连接服务器的程序,您可能会熟悉 REST API。 通过这个API,您可以连接到特定的服务器。

在本文中,我们将了解 REST API、它的工作原理和关键功能,以及如何使用 GET 和 POST 请求在 Java 中调用 REST API。


Java REST API 概述

REST 一词被定义为表述性状态转移。 它是如何工作的? 在这个系统中,您的程序是一个客户端,可以向服务器发送请求以获取一些数据。

另一方面,这里的服务器接收该调用并响应客户端。 该请求和响应对遵循称为 HTTP 或超文本传输协议的协议。

REST API 的主要特性

以下是 REST API 的主要功能:

  1. REST API 的设计是无状态的,这意味着当客户端和服务器想要连接时,它们将需要一条额外的信息来完成请求。
  2. REST API 还可以缓存资源以获得更好的性能。
  3. REST API 使用统一的接口,使客户端能够以特定语言与服务器对话。

在 Java 中使用 GET 和 POST 请求调用 REST API

GET 接收指定资源的表示,而 POST 用于将要处理的数据写入已识别的资源。 下面我们来学习如何使用它们来调用 REST API。

使用 GET 请求

示例代码:

// Importing all the necessary packages
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class HTTPGet {

    public static void main(String args[]) throws Exception {

        // Providing the website URL
        URL url = new URL("http://example.com");

        // Creating an HTTP connection
        HttpURLConnection MyConn = (HttpURLConnection) url.openConnection();

        // Set the request method to "GET"
        MyConn.setRequestMethod("GET");

        // Collect the response code
        int responseCode = MyConn.getResponseCode();
        System.out.println("GET Response Code :: " + responseCode);

        if (responseCode == MyConn.HTTP_OK) {
            // Create a reader with the input stream reader.
            BufferedReader in = new BufferedReader(new InputStreamReader(
                    MyConn.getInputStream()));
            String inputLine;

            // Create a string buffer
            StringBuffer response = new StringBuffer();

            // Write each of the input line
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            //Show the output
            System.out.println(response.toString());
        } else {
            System.out.println("Error found !!!");
        }
    }
}

在上面的示例中,我们演示了 HTTP 中最常用的请求方法,即 GET。 我们已经在示例代码中写下了每一行的用途。

在此示例中,我们根据提供的 URL 创建了一个 HTTP 连接,然后定义了请求的属性。 之后,我们将请求方法设置为GET。

然后我们用InputStreamReader创建了一个BufferedReader来读取并保存每个文档行。 最后,我们将网站打印为输出。

输出:

GET Response Code :: 200
<!doctype html>
<html>
 <head>
  <title>Example Domain</title>
  <meta charset="utf-8">
  <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <style type="text/css">
    body {
        background-color: #f0f0f2;
        margin: 0;
        padding: 0;
        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
        
    }
    div {
        width: 600px;
        margin: 5em auto;
        padding: 2em;
        background-color: #fdfdff;
        border-radius: 0.5em;
        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
    }
    a:link, a:visited {
        color: #38488f;
        text-decoration: none;
    }
    @media (max-width: 700px) {
        div {
            margin: 0 auto;
            width: auto;
        }
    }
    </style>
 </head>
 <body>
  <div>
   <h1>Example Domain</h1>
   <p>This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.</p>
   <p><a href="https://www.iana.org/domains/example">More information...</a></p>
  </div>
 </body>
</html>

使用 POST 请求

示例代码:

// Importing all the necessary packages
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class HTTPPost {

    public static void main(String[] args) throws MalformedURLException, IOException {

        // Providing the website URL
        URL myUrl = new URL("https://example.com");
        // Creating an HTTP connection
        HttpURLConnection MyConn = (HttpURLConnection) myUrl.openConnection();

        // Set the request method to "POST"
        MyConn.setRequestMethod("POST");
        MyConn.setDoOutput(true);
        // Creating an output stream
        OutputStream out = MyConn.getOutputStream();

        // Defining the sting to post
        String postedString = "This is the posted text !!!!!!";
        out.write(postedString.getBytes());
        // Collect the response code
        int responseCode = MyConn.getResponseCode();

        System.out.print("Value of http created is:" + MyConn.HTTP_CREATED + "\n");

        if (responseCode == MyConn.HTTP_CREATED) {
            System.out.print("This is the response Code: " + responseCode + "\n");
            System.out.print("This is the response Message fromserver: "
                    + MyConn.getResponseMessage() + "\n");
        } else {
            System.out.print("GO HOME, EVERYBODY :( ");
        }
        // Creating an input stream reader
        InputStreamReader in = new InputStreamReader(MyConn.getInputStream());
        // Creating a buffered reader
        BufferedReader buffer = new BufferedReader(in);
        // Creating a string buffer
        StringBuffer fromServer = new StringBuffer();
        String eachLine = null;

        // Writing each line of the document
        while ((eachLine = buffer.readLine()) != null) {
            fromServer.append(eachLine);
            fromServer.append(System.lineSeparator());
        }
        buffer.close();
        // Printing the html document
        System.out.print("Here is our webpage:\n" + fromServer);
    }
}

输出:

Value of http created is:201
GO HOME, EVERYBODY :( Here is our webpage:
<!doctype html>
<html>
 <head>
  <title>Example Domain</title>
  <meta charset="utf-8">
  <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <style type="text/css">
    body {
        background-color: #f0f0f2;
        margin: 0;
        padding: 0;
        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
        
    }
    div {
        width: 600px;
        margin: 5em auto;
        padding: 2em;
        background-color: #fdfdff;
        border-radius: 0.5em;
        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
    }
    a:link, a:visited {
        color: #38488f;
        text-decoration: none;
    }
    @media (max-width: 700px) {
        div {
            margin: 0 auto;
            width: auto;
        }
    }
    </style>
 </head>
 <body>
  <div>
   <h1>Example Domain</h1>
   <p>This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.</p>
   <p><a href="https://www.iana.org/domains/example">More information...</a></p>
  </div>
 </body>
</html>

在上面的示例中,我们演示了 HTTP 中另一种最常用的请求方法,即 POST。 在示例中,我们根据提供的 URL 创建了一个 HTTP 连接,然后定义了请求的属性。

之后,我们将请求方法设置为POST。 然后,我们设置一个OutputStream来发送字符串; 之后,我们处理响应代码。

接下来,我们使用 InputStreamReader 创建了一个 BufferedReader。 然后我们创建了一个 StringBuffer 来保存所有文档。 希望您已经学会了如何在 Java 中使用 GET/POST 请求调用 REST API。

上一篇:Java 中的名册应用程序

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Java 中的名册应用程序

发布时间:2023/08/06 浏览次数:85 分类:Java

本文介绍如何使用 Java 开发名册应用程序。Java 中的名册应用程序 名册申请提供了候选人记录的详细信息或某些候选人必须执行工作的订单详细信息。 Roster 应用程序用于维护任何内容的记录。

用Java读取Excel文件

发布时间:2023/08/06 浏览次数:141 分类:Java

本文介绍了在 Java 程序中读取 Excel 文件的必要信息。 使用什么软件? 要遵循哪些步骤,最后但并非最不重要的一点是如何应用库以便用户可以读取 Excel 文件。 那么,让我们开始吧。用 Java 读

用 Java 创建 Excel 文件

发布时间:2023/08/06 浏览次数:141 分类:Java

本文介绍如何使用 Java 创建 Excel 文件。用 Java 创建 Excel 文件 Excel 工作表有存储数据的单元格,但用 Java 创建、读取和写入 Excel 文件很棘手。

Java 字母电话号码转换器

发布时间:2023/08/06 浏览次数:68 分类:Java

本文介绍如何用 Java 生成字母电话号码转换器。Java 字母电话号码转换器 有时,公司会使用电话号码格式,例如 555-GET-FOOD,这是编写电话号码的标准化流程,以便客户更容易记住。

Java中的并发队列实现

发布时间:2023/08/06 浏览次数:69 分类:Java

本文将讨论 Java 中并发队列的一些最有效的实现以及需要利用哪些实现。Java 中的并发队列 首先,我们来讨论所有三个队列。Java ConcurrentLinkedQueue、Java ArrayBlockingQueue、Java LinkedBlockingQueue

Java 中的闭包

发布时间:2023/08/06 浏览次数:140 分类:Java

本文将详细讨论闭包并提供必要的示例和解释以使该主题更容易。在开始讨论之前,让我们先看看闭包的一般语法,如下所示。Java 中的闭包 在下面的示例中,我们将说明最基本的闭包,其中我

在 Java 中使用带有 Jackson 的自定义序列化器

发布时间:2023/08/05 浏览次数:80 分类:Java

本文将介绍如何在 Java 中使用 Jackson 的自定义序列化器。 首先,我们来了解一下序列化的概念。Java 中的序列化 Java 中的序列化过程是一种将对象与字节流相互转换的技术。 这不仅可以将对象

Java 中的 Trie 数据结构

发布时间:2023/08/05 浏览次数:111 分类:Java

本文介绍了 Java 中的 Trie 数据结构。Java 中的 Trie 数据结构 Trie 词是从单词 Retrieval 中提取出来的,它是一种用于存储字符串集合的排序数据结构。

JAVA_OPTS 环境变量

发布时间:2023/08/05 浏览次数:199 分类:Java

JAVA_OPTS 是一个环境变量,用于将自定义设置传递给 Java 虚拟机。 本文介绍了 JAVA_OPTS 的使用。JAVA_OPTS 环境变量 JAVA_OPTS 是一个标准环境变量,用于设置 Java 虚拟机的自定义设置。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便