问题标签 [streamingresponsebody]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
214 浏览

java - Spring Boot 应用程序阻塞 StreamingResponseBody

我有一个 Spring Boot 应用程序,在其中创建了一个 POST 方法,该方法以流方式向调用者发送数据。下面的代码:

它工作得很好,但问题是如果多个调用到达这个方法,即使我已经设置了所有这些调用都是并行运行的server.tomcat.threads.max=1。在非流式传输版本中,每个下一个调用都等待当前调用完成。

是否可以在 Spring 中阻止流式调用?谢谢。

编辑:我暂时通过使用只有 1 个许可证的全局信号量来解决,但我认为这不是理想的解决方案。

0 投票
1 回答
1642 浏览

java - 使用 Spring Boot 2 控制器 StreamingResponseBody 流式传输视频文件 mp4

我正在尝试使用 Spring Boot 2 流式传输视频文件 mp4,我遵循了一些教程,解决方案应该很简单......就像我在下面复制的控制器......但不适合我。

我不明白为什么..当我将网址放入浏览器时,默认视频播放器出现,正在加载...超时后我在浏览器控制台中收到“net::ERR_CONTENT_LENGTH_MISMATCH 200”..

如果我省略 headers.add("Content-Length", Long.toString(file.length())); 加载速度非常快,但没有任何反应......

我错过了什么?...

编辑 - -

我找到了另一种方法来完成这项工作,不使用 StreamingResponseBody,而是使用响应标头 "Range-Content" 。

这里有一个很好的解释:HTTP Range header

在这里: https ://github.com/saravanastar/video-streaming

0 投票
0 回答
23 浏览

xml - TypeError:当我尝试在邮递员的 xml 响应中获取属性的值时,无法读取未定义的属性

我想从邮递员的这个响应中获取 Cardholderid 的值。我正在使用这段代码:

但我不断收到未定义的错误消息。有人可以帮忙吗?响应正文如下图:

任何帮助,将不胜感激..

0 投票
0 回答
88 浏览

spring-boot - Springboot StreamingResponseBody 和 HTTP 流

StreamingResponseBody 是 HTTP Streaming 的实现吗?

我想在Springboot中做简单的HTTP Streaming服务实现,我发现StreamingResponseBody会将数据写入OutputStream。但是根据我的理解,HTTP Streaming 将具有实时连接,其中来自服务器的事件将被推送到客户端,并且只有在明确定义为关闭连接时才会关闭连接。

但是使用 StreamingResponseBody,我注意到完整的响应被发送到客户端,连接关闭。所以我有点困惑的是“StreamingResponseBody”是HTTP Streaming的真正实现吗?

0 投票
0 回答
657 浏览

java - 使用 StreamingResponseBody,某些非常大的响应因 org.apache.coyote.CloseNowException 而失败

我正在使用 Spring Boot 创建一个 REST-Api,它需要将大量 JSON 数据传输到客户端。为了避免极端的内存使用或过多的数组实例化,我使用 StreamingResponseBody 以块的形式发送数据:

FooService 有大量数据,它过滤然后使用 JsonGenerator 写入 Stream。我不能在这里展示实际的服务。请放心,生成的 Json-Array 逐个条目写入流中,所有内容都已正确刷新,并且 JsonGenerator 已关闭。如果我的输出数组包含大约 100000 个条目,那么一切正常。但是,如果我将该输出增加到 1000000 个条目,则请求在传输过程中失败。

Stacktrace 的部分内容:

httpie 报错:

一旦我的服务输入不再需要存储在内存中,我希望能够处理任何大小的数据。显然 OutputStream 在某些时候不再工作? 想法1:由于某种原因,传输的某些块的长度错误,客户端取消请求,OutputStream 关​​闭。因此,服务器出现异常。 想法 2:由于某种原因,服务器停止了 OutputStream,导致客户端内的响应意外结束。

关于如何解决这个问题的任何想法?很抱歉我不能分享我的原始代码。

谢谢你的帮助!

0 投票
0 回答
25 浏览

java - StreamingResponseBody - 验证是否有效

我目前正在实现一个用于流式传输较大文件的 API。我发现它StreamingResponseBody甚至可以用ResponseEntity<StreamingResponseBody>.

基本上它工作正常,我的意思是它以与典型端点返回相同的方式返回文件ResponseEntity<byte[]>。但是,我该如何验证,看看这两种方法之间有什么区别?我想知道该应用程序实时监控一些内存使用情况,但是我不确定这是否是正确的方法。

此外,我想问一下是否有可能将其包装StreamingResponseBody到其他对象中并传递其他信息,否则会破坏流功能?我期待这样的事情:

0 投票
1 回答
73 浏览

java - Kotlin/Java 发送 Gzip 流式响应

我正在尝试发送包含压缩(gzip)流输出的响应。我当前的代码是:

当我请求此服务时,我的浏览器中会出现乱码数据。即使我的响应正确设置了以下标头,我似乎也遗漏了一些东西:Content-Encoding:gzip 和 Transfer-encoding:chunked。

在我放心的单元测试中,如果我提取正文并通过 GzipInputStream() 读取它,我可以检索 json 正文。

当我更换:

val os = GZIPOutputStream(outputStream)

val os = DeflaterOutputStream(outputStream) and Content-Encoding : deflate

输出正确解压为 json。

我正在使用 Quarkus 2.6.0.Final。

感谢您的帮助和见解!

0 投票
0 回答
9 浏览

retrofit2 - 如何处理响应类型为 okhttp3.ResponseBody 的改造调用中的 http 错误

我正在使用改造来管理我的远程 api 调用

其中一个调用会下载大型 pdf 文件,如此处所示

这一切正常,直到我遇到任何 HTTP 错误(例如 404),我必须将我的代码包装在 try catch 块中并且接收到关于异常的非常少的信息

ResponseBody在我的改造调用中用作返回类型时如何检测错误?

我用来ResponseBody支持流式传输文件,从而提高我的整体下载性能。