关于Java中REST请求的说明

问题描述 投票:0回答:2

我必须用纯Java实现发布请求。

我已阅读以下问题:

How to make a post request to a json RESTful Service from Java?

这是示例的一部分

String url = "https://myStore.com/REST-API/";
String requestBody = "{\"searchProduct\": \"" + searchProduct + "\"}";

URL obj = new URL(url);

HttpsURLConnection connection = (HttpsURLConnection) obj
        .openConnection();

connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");

OutputStream outputStream = connection.getOutputStream();

outputStream.write(requestBody.getBytes());

我的问题是:为什么将参数写在输出流上?据我所知,输出流用于收集请求的输出,而不是发出请求。

所以只是出于好奇,请考虑一下我显然不熟练。

java rest post outputstream
2个回答
0
投票

InputStreamOutputStream的目标是抽象流。所谓流,是指处理后的数据的方式(程序的输入或输出)如果应用程序从流中接收信息,请使用InputStream。如果发送数据,则OutputStream

  • [InputStream用于从源读取数据。
    var input = new FileInputStream("input.txt");// Read the data
  • [OutputStream用于将数据写入目的地。
    var output = new FileOutputStream("output.txt");// Write the data

您应该阅读答案in the related question:还有更多说明。


0
投票

首先让我们解释HttpConnectionURL的工作原理。

当您想从服务器请求数据时,

  1. 您首先创建与该服务器的连接。
  2. 然后将数据写入连接(请求)
  3. 并最终从连接中读取数据(响应)。

因此,将数据写入连接时,您将获得对Connection的OutputStream的引用并将数据写入其中。

OutputStreamWriter writer = new OutputStreamWriter(
            connection.getOutputStream());
    writer.write("message=" + message);

要从连接读取数据,您需要引用连接的InputStream并从中读取数据。

InputStreamReader reader = new InputStreamReader(connection.getInputStream());
reader.read();

通常,当数据从程序中流出(到文件,网络等时,使用OutputStream,而当数据从文件,网络等流出时,则使用InputStream。

我认为这将为您提供所需的清晰度。

This answer explains in detail how HttpConnectionURL works

© www.soinside.com 2019 - 2024. All rights reserved.