当前位置: 首页 > 知识库问答 >
问题:

关于Java和输出/输入流中REST请求的说明

弓晔
2023-03-14

我必须在简单的Java实现一个帖子请求。

我看过下面这个问题:

如何从Java向json RESTful服务发出post请求?

这是示例的一部分

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());

我的问题是:为什么参数写在输出流上?据我所知,输出流是为了收集一个请求的输出,而不是为了制作它。

只是好奇,考虑到我显然不擅长这个。

共有2个答案

谢财
2023-03-14

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

  • 输入流用于从源读取数据。
java prettyprint-override">    var input = new FileInputStream("input.txt");// Read the data
  • 用于将数据写入目标的OutputStream
    var output = new FileOutputStream("output.txt");// Write the data

你应该阅读相关问题的答案:有更多的解释。

麹正业
2023-03-14

首先让我们解释一下HttpConnectionURL是如何工作的。

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

    < li >首先创建与该服务器的连接。 < li >然后将数据写入连接(请求) < li >最后从连接中读取数据(响应)。

因此,要将数据写入连接,您将获得对连接的 OutputStream 的引用,并向其写入数据

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

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

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

通常,当数据从程序流出(到文件、网络等)时,您使用OutputStream,当数据流入程序(从文件、网络等)时,您使用InputStream。

我想这会给你带来你想要的清晰。

这个答案详细解释了HttpConnectionURL的工作原理

 类似资料:
  • 问题内容: 有没有人有创建Java中的管道对象,任何好的建议 是 从Java既是一个InputStream和和OutputStream没有多重继承和两个流是抽象类,而不是接口? 基本需求是有一个可以传递给需要InputStream或OutputStream的对象的对象,该对象需要将一个线程的输出传递给另一个线程的输入。 问题答案: 看来这个问题的重点已被遗漏。如果我对您的理解正确,那么您希望一个对

  • 本小节将会介绍基本输入输出的 Java 标准类,通过本小节的学习,你将了解到什么是输入和输入,什么是流;输入输出流的应用场景,File类的使用,什么是文件,Java 提供的输入输出流相关 API 等内容。 1. 什么是输入和输出(I / O) 1.1 基本概念 输入/输出这个概念,对于计算机相关专业的同学并不陌生,在计算中,输入/输出(Input / Output,缩写为 I / O)是信息处理系

  • 当我在Jersey中有一个监听POST请求的方法,并且当我想从中获取数据的方法中有一个InputStream作为参数时,我需要关闭这个InputStream还是Jersey会处理这个问题? 我没有找到任何相关信息。不久前,我读过使用JAX-RS 2.0的RESTful Java,我不记得是否有人提到过它。现在浏览一下,我发现了几个代码示例,并且流没有关闭。我觉得没必要,但我想问问。

  • 我想用java代码调用一个外部程序,然后Google告诉我Runtime或ProcessBuilder可以帮助我完成这项工作。我试过了,结果发现java程序无法退出,这意味着子进程和父进程都将永远等待。它们要么挂起,要么陷入僵局。 有人告诉我原因是子进程的缓存太小了。当它试图将数据返回给父进程时,但是父进程没有及时读取它,然后他们两个都挂起了。所以他们建议我叉一个线程来负责读取子进程的缓存数据。我

  • 问题内容: 我下面有以下代码示例。你可以在其中输入的命令,即回显结果。但是,先读后。其他输出流不起作用? 为什么会这样或我做错了什么?我的最终目标是创建一个线程计划任务,该任务定期执行对/ bash的命令,因此必须一前一后工作,而不能停止工作。我也一直在经历错误的任何想法? 谢谢。 问题答案: 首先,我建议更换生产线 与线 ProcessBuilder是Java 5中的新增功能,它使运行外部进程更

  • 我试图激发一个http post请求,我的问题是我得到了一个NullpointerException,我想我知道在哪里,但我不知道为什么。 代码是 它位于以下行: 问题似乎是建立Http URL连接,但我的目标URL(我想发送请求的URL)是正确的:目标URL:'Http:localhost:8080/project/externaldata'(它是我的URL模式中我的(Spring)Reques