在Spring引导中接收HTTP流
我想在SpringBoot中接收HTTP流,但HttpServletRequest的InputStream似乎不是一个无止境的HTTP流,它只包含第一个HTTP主体的内容 我想在SpringBoot中处理一个chuncked HTTP流,该流上不时会有一些值字符串 目前,我在控制器中尝试了类似的方法:在Spring引导中接收HTTP流,spring,spring-boot,http-headers,http-streaming,Spring,Spring Boot,Http Headers,Http Streaming,我想在SpringBoot中接收HTTP流,但HttpServletRequest的InputStream似乎不是一个无止境的HTTP流,它只包含第一个HTTP主体的内容 我想在SpringBoot中处理一个chuncked HTTP流,该流上不时会有一些值字符串 目前,我在控制器中尝试了类似的方法: @Override public void test(HttpServletRequest request, HttpServletRes
@Override
public void test(HttpServletRequest request,
HttpServletResponse response) {
System.out.println("StreamStart");
try {
byte[] buffer = new byte[1024];
while(true){
int len = request.getInputStream().read(buffer);
if(len!=-1) {
System.out.println("Len: " + len);
System.out.println(new String(buffer));
}
Thread.sleep(500);
}
}
catch(Exception x){
x.printStackTrace();
}
System.out.println("StreamEnd");
}
但是,头之后的第一个请求正文起作用,但第二个请求正文没有出现在我的控制器中
SpringBoot是否取消连接或流?
我可以访问完整的HTTP输入流以从中获取我的值吗?也许多部分请求对您有用? 这样,您可以接收数据的多个部分 例如:
好主意,多部分是否需要预先定义的内容长度?我需要一些没有预定义内容长度的流媒体,因为客户端正在通过HTTP流媒体将数据推送到服务器,我不知道内容长度。我想在服务器和客户端之间重新实现无休止的流媒体,我认为使用multipart是不可能的。我已经使用它作为从客户端到服务器的流媒体,这里有一个很好的描述如何做到这一点。对于内容长度,可以将属性设置为大值。谢谢,但是我可以把HTTP头内容len修改为一个大的数字,然后它就可以作为流媒体工作了吗?我不能想象那样不,不是那样。您需要一个读取多部分流的服务器和发送它的客户端。对于服务器部件
@PostMapping("/upload")
public void uploadStream(@RequestParam MultipartFile[] multipartFiles){
for(MultipartFile multipartFile:multipartFiles){
try {
InputStream inputStream = multipartFile.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
}
}