澄清 Java 和 output/input 流中的 REST 请求
Clarification about REST request in Java and output/input streams
我必须以普通 Java 实现 post 请求。
我已阅读以下问题:
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());
我的问题是:为什么参数写在输出流上?据我所知,输出流用于收集请求的输出,而不是进行请求。
所以只是好奇,考虑到我显然不擅长这个。
InputStream
和 OutputStream
的目标是抽象流。流,我指的是处理数据的方式(程序的输入或输出)
如果应用程序从流中接收信息,请使用 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:有更多的解释。
首先让我们解释一下 HttpConnectionURL 是如何工作的。
当你想从服务器请求数据时,
- 您首先创建到该服务器的连接。
- 然后你向连接(请求)写入数据
- 最后从连接中读取数据(响应)。
因此,要将数据写入连接,您需要获取连接的 OutputStream 的引用并将数据写入其中。
OutputStreamWriter writer = new OutputStreamWriter(
connection.getOutputStream());
writer.write("message=" + message);
要从连接中读取数据,您需要获取对连接的 InputStream 的引用并从中读取数据。
InputStreamReader reader = new InputStreamReader(connection.getInputStream());
reader.read();
通常,当数据流出程序(流向文件、网络等)时使用 OutputStream,当数据流入程序(从文件、网络等)时使用 InputStream。
我认为这会给你想要的清晰度。
我必须以普通 Java 实现 post 请求。
我已阅读以下问题:
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());
我的问题是:为什么参数写在输出流上?据我所知,输出流用于收集请求的输出,而不是进行请求。
所以只是好奇,考虑到我显然不擅长这个。
InputStream
和 OutputStream
的目标是抽象流。流,我指的是处理数据的方式(程序的输入或输出)
如果应用程序从流中接收信息,请使用 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:有更多的解释。
首先让我们解释一下 HttpConnectionURL 是如何工作的。
当你想从服务器请求数据时,
- 您首先创建到该服务器的连接。
- 然后你向连接(请求)写入数据
- 最后从连接中读取数据(响应)。
因此,要将数据写入连接,您需要获取连接的 OutputStream 的引用并将数据写入其中。
OutputStreamWriter writer = new OutputStreamWriter(
connection.getOutputStream());
writer.write("message=" + message);
要从连接中读取数据,您需要获取对连接的 InputStream 的引用并从中读取数据。
InputStreamReader reader = new InputStreamReader(connection.getInputStream());
reader.read();
通常,当数据流出程序(流向文件、网络等)时使用 OutputStream,当数据流入程序(从文件、网络等)时使用 InputStream。
我认为这会给你想要的清晰度。