`

request.getInputStream() 只能读一次的解决方法

    博客分类:
  • Java
阅读更多
我们知道request.getInputStream()只能读一次,如果下一次读,就会报告Stream closed的错误。下面是解决方法。

InputStream input =  request.getInputStream();  
                  
ByteArrayOutputStream bytebuffer= new ByteArrayOutputStream();  
byte[] buffer = new byte[1024];  
int len;  
while ((len = input.read(buffer)) > -1 ) {  
    bytebuffer.write(buffer, 0, len);  
}  
bytebuffer.flush();                
  
InputStream stream1 = new ByteArrayInputStream(bytebuffer.toByteArray());  




输出request.getInputStream()内容的方法如下:

StringBuffer buffer = new StringBuffer();
		try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
			String line = "";
			while ((line = reader.readLine()) != null)
				buffer.append(line);
		}

		logger.info("接收xml数据:" + buffer);
分享到:
评论

相关推荐

    springboot 解决InputStream只能读取一次的问题

    本篇文章将详细讲解如何在Spring Boot应用中解决`InputStream`只能读取一次的问题。 首先,了解`InputStream`的工作原理。`InputStream`是Java I/O中的基础类,它定义了读取字节流的基本操作。当我们尝试从`...

    完美解决request请求流只能读取一次的问题

    解决request请求流只能读取一次的问题,我们可以使用自定义的HttpServletRequestWrapper,覆写getInputStream()和getReader()方法,从而实现流的重复读取。这可以在SpringBoot项目中使用Filter拦截器对所有请求流中...

    spring应用中多次读取http post方法中的流遇到的问题

    这篇内容主要探讨了在Spring中如何多次读取HTTP POST方法中的流,以及遇到的问题和解决方案。 一、问题描述 ...1. 当Content-Type为...这个解决方案不仅解决了流只能读一次的问题,还保持了代码的灵活性和可扩展性。

    java 面试题 总结

    例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望...

    超级有影响力霸气的Java面试题大全文档

    当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例...

Global site tag (gtag.js) - Google Analytics