`

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);
分享到:
评论

相关推荐

    浅谈request.getinputstream只能读取一次的问题

    然而,一个重要的概念是,`getInputStream()`返回的`ServletInputStream`只能被读取一次,这是由其内部实现机制决定的。 首先,我们需要了解Java的`InputStream`类。`InputStream`是所有字节输入流的基类,它定义了...

    浅谈图片上传利用request.getInputStream()获取文件流时遇到的问题

    "浅谈图片上传利用request.getInputStream()获取文件流时遇到的问题" 本文讨论了使用request....本文讨论了使用request.getInputStream()获取文件流时遇到的问题,并提供了两种获取文件流的方式和解决问题的方法。

    postman调试接口工具

    在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,拿到接口后肯定都得提前测试一下,这样的话就非常需要有一个比较给力的Http请求模拟工具,现在流行的这种工具也挺多的,像火狐浏览器插件-...

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

    这样,我们就成功地解决了Spring Boot中`InputStream`只能读取一次的问题,使得我们可以多次读取并处理请求数据,无论是用于文件上传、消息解析还是其他需要多次读取的场景。在实际项目中,根据具体需求,可能还需要...

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

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

    sevlet生命周期,request web.xml 及ServletContext总结

    否则,将在第一次请求时加载。 2. **初始化**: 在Servlet实例创建后,容器会调用`init()`方法。这是Servlet准备处理请求前进行初始化工作的地方,例如配置连接、读取配置信息等。在`init()`方法中,Servlet可以...

    对Servlet 中 request.setEncoding("utf-8")的分析

    在本例中,`request`对象实际上是由Tomcat提供的`RequestFacade`类的一个实例,这个类实现了`HttpServletRequest`接口,起到了一个代理的作用,允许我们调用标准的Servlet API方法。 2. **RequestFacade与Request...

    spring-resource

    除了基本的读取操作,`Resource`还支持其他方法,如`exists()`检查资源是否存在,`isReadable()`判断是否可读,`getURI()`获取资源的URI,`getFileName()`获取文件名等,这些都是在处理资源时可能用到的功能。...

    Socket中InputStream的read方法的阻塞特性

    Socket中的InputStream的`read`方法是Java网络编程中一个核心的概念,它在处理客户端与服务器之间的数据传输时起着至关重要的作用。`read`方法的阻塞特性是其设计的一个重要特点,也是理解多线程和并发编程的关键点...

    Java 从网络中读取图片 转换成Base64字符串

    在Java编程中,将网络上的图片读取并转换为Base64字符串是一项常见的任务,尤其在Web开发中,这样的操作可以用于数据传输或者存储。Base64是一种编码方式,能够将二进制数据转化为可打印的ASCII字符,方便在网络上...

    http request 解析

    在Java中,你可以创建一个URL对象,然后通过`openConnection()`方法得到`HttpURLConnection`实例,如下所示: ```java URL url = new URL("http://example.com"); HttpURLConnection connection = ...

    Request对象主要方法

    在深入探讨`Request`对象的主要方法之前,我们首先需要理解`Request`对象的基本概念及其在Web开发中的核心作用。`Request`对象是Web应用程序中处理客户端请求的关键组件,它封装了来自客户端的所有请求数据,包括但...

    ServletRequest过滤程序

    提供了ServletRequest过滤程序,重新构造对象内容,并有效规避request.getParameter()、request.getInputStream()冲突的问题,同时提供了对跨站脚本攻击XSS和SQL注入的过滤程序。

    ognl源码包值得用一用

    很好的xwork的资源包public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { DiskFileItemFactory factory = new DiskFileItemFactory(); ...

    崔希凡JavaWeb笔记day22-day24

    - **表单的method必须是POST**: GET方式无法传输大量数据或二进制数据,因此文件上传只能使用POST方法。 - **表单的enctype必须是multipart/form-data**: 这是为了支持文件上传功能。 - **表单中需要添加file表单...

    request的实例源码

    `HttpServletRequest`接口是Java Servlet API的一部分,由Servlet容器(如Tomcat)创建并传递给Servlet的`service()`方法或`doGet()`, `doPost()`等特定方法。它包含了客户端的所有请求信息,如请求URL、请求参数、...

    使用Servlet处理一个上传的文件

    本篇文章将详细介绍如何使用Servlet处理一个上传的文件,包括使用`getReader()`、`getInputStream()`以及`getPart()`和`getParts()`方法。 首先,了解文件上传的基本原理。在HTML表单中,我们需要设置`enctype=...

    利用org.apache.commons.fileupload上传多个文件

    3. **FileItem**:提供了访问上传文件和表单字段的方法,如 `isFormField()`、`getFieldName()`、`getName()`、`getInputStream()` 等。 4. **上传文件保存**:通常,我们需要将 `FileItem` 的输入流写入服务器指定...

    通过代理解决WFS服务跨域测试代码

    InputStream in = request.getInputStream(); byte[] buffer = new byte[4096]; int read; while ((read = in.read(buffer)) != -1) { out.write(buffer, 0, read); } out.flush(); out.close(); int ...

    JSP request(return String)用法详例

    在实际开发中,`request`对象还提供其他功能,如获取请求参数(`request.getParameter()`),读取请求体数据(`request.getInputStream()`或`request.getReader()`),检查请求是否是安全的(`request.isSecure()`)...

Global site tag (gtag.js) - Google Analytics