`

ServletServerHttpRequest getinputstream获取不到字节数据

    博客分类:
  • web
 
阅读更多
使用spring4.0的框架,重新定义messageconverter解析类,只加了一个自定义的jackson解析模型,直接copy MappingJackson2HttpMessageConverter类,在
private Object readJavaType(JavaType javaType, HttpInputMessage inputMessage) {
       try {
            if(inputMessage.getBody().available() == 0)
            {
                return null;
            }

            return this.objectMapper.readValue(inputMessage.getBody(), javaType);
        } catch (IOException var4) {

            throw new HttpMessageNotReadableException("Could not read JSON: " + var4.getMessage(), var4);
        }
    }
中重新定义一段代码,红色部分,我们看inputMessage.getBody()


发现到ServletServerHttpRequest的getbody
public InputStream getBody() throws IOException {
        return (InputStream)(this.isFormPost(this.servletRequest)?this.getBodyFromServletRequestParameters(this.servletRequest):this.servletRequest.getInputStream());
    }
看源码,只要application/x-www-form-urlencoded或者不是post,该方法就返回
this.servletRequest.getInputStream());

我在自定义类里发现inputMessage.getBody().available() == 0都是true;数据呢,
发现一个请求inputstream只能被读取一次,以后只能通过getParameterMap来获取了,我在filter里打印了inputstream,所以这里就获取不到字节流

所以重点是servlet的request的inputstream只能被读一次,馹
  • 大小: 156.9 KB
分享到:
评论

相关推荐

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

    第二点是获取的内容不只是文件的内容,还包括其他表单中的数据。 在文章中,我们首先介绍了使用DataInputStream获取文件流的方式。这种方式需要先获取请求参数的长度,然后定义一个数组来存储输入流的数据。接着,...

    远程获取其他网址数据

    远程数据获取概述 远程获取数据是指在一个程序中通过网络请求的方式从其他服务器或网站上获取信息的过程。这种方式在现代软件开发中非常常见,尤其是在需要从多个源收集数据的应用场景下。 ### 2. Java实现远程...

    java获取省市县数据

    在Java编程中,获取省市县数据通常涉及到地理信息系统(GIS)和数据库操作。这篇博客文章“java获取省市县数据”可能讲述了如何利用Java语言来获取并处理中国各级行政区域的数据,如省、市、县。这在开发需要地域...

    java 获取json网页数据

    在Java编程中,获取JSON网页数据是常见的任务,特别是在处理Web API或者进行数据抓取时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁和高效而广泛被采用。本实例将深入讲解如何使用...

    JAVA串口采集传感器数据

    采集到的数据通常需要解析和处理,例如,从传感器接收到的数据可能遵循特定的协议格式。根据协议,你可以解析数据并转换为有意义的信息。处理完数据后,可能还需要将其返回给发送方,这同样可以通过串口进行,只需将...

    android get,post获取数据

    GET是幂等的,意味着多次执行同一个GET请求会得到相同的结果,它通常用于获取资源,且数据会附加到URL中,可见且有限制(一般不超过2048个字符)。POST请求则常用于提交数据,如表单提交,数据在请求体中,大小限制...

    Android开发简单获取网页数据

    本文将详细介绍如何在Android应用中简单地获取网页数据,以及涉及到的关键技术。 首先,Android应用进行网络操作时,必须在主线程之外执行,否则会触发"NetworkOnMainThreadException"异常。因此,我们通常采用...

    ByteIO_java_字节流_

    通过`Socket`类的`getInputStream()`和`getOutputStream()`方法,可以获取到与远程服务器连接的字节流。 总的来说,`ByteIO.java`文件可能包含了字节流的基本用法,如文件读写、数据传输、缓冲优化等。通过学习和...

    Java字节流与字符流的介绍.pdf

    5. SequenceInputStream:从两个或多个低级流中读取数据字节,当到达流的末尾时从一个流转到另一个流 6. System.in:从用户控制台读取数据字节 InputStream 还有一个子类:过滤器流 java.io.FilterInputStream。...

    一个简单的获取URL 数据方法,附文档代码

    // 将读取的数据写入到字节数组输出流中 outputstream.write(str_b, 0, i); } // 将字节数组输出流转换为字符串 all_content = outputstream.toString(); } catch (Exception ex) { ex.printStackTrace(); ...

    Java IO字符流和字节流

    // 实现字符串到字节的转换 } public static String bytesToHexString(byte[] bytes) { StringBuilder sb = new StringBuilder(); for (byte b : bytes) { sb.append(String.format("%02X", b)); } return sb...

    java读取电子称重量数据完整版rxtx包

    4. **设置输入/输出流**:通过`getInputStream()`和`getOutputStream()`方法获取串口的输入流和输出流,以便读写数据。 5. **读取数据**:使用`BufferedReader`或`DataInputStream`等类从串口的输入流中读取数据。...

    字节流工具

    通过调用InputStream的read()方法,将数据读取到ByteArrayOutputStream中,然后调用其toByteArray()方法获取byte数组。 - 将byte数组转换为InputStream:可以创建一个ByteArrayInputStream对象,传入byte数组作为...

    正则+url获取指定网站数据信息

    获取到网页内容后,我们就可以使用正则表达式来匹配和提取所需的数据了。正则表达式是一种强大的文本模式匹配工具,它可以用来查找、替换或分割字符串。在Java中,我们通常使用`java.util.regex`包中的`Pattern`和`...

    ajax post 数据过长导致后台属性驱动接受不到值的处理

    这篇博客“ajax post 数据过长导致后台属性驱动接受不到值的处理”着重探讨了当POST提交的数据量过大时,如何有效处理以确保后台能够正确接收和处理这些数据。问题的核心在于HTTP协议对请求体大小的限制以及服务器端...

    android客户端从服务器端获取json数据并解析

    在Android开发中,从服务器端获取JSON数据并进行解析是一项常见的任务,这涉及到网络通信、数据格式处理以及数据解析等多个方面。以下是对这一过程的详细解释: ### 一、从服务器端获取JSON数据 #### 1. 使用...

    17-01 从某url获取json数据

    在IT行业中,获取JSON数据是常见的...总的来说,从URL获取JSON数据是软件开发中的基础操作,涉及到网络请求、线程管理和数据解析等多个方面。通过理解这些概念和实践,开发者可以更好地构建与服务器通信的应用程序。

    rar文件java post获取网页数据以及get方式获取数据.zip

    然而,GET方法有一些限制,比如参数长度有限,且数据明文传输,不适合敏感信息。 接下来,我们转向POST方法。POST方法用于向服务器提交数据,通常用于表单提交或上传文件。数据包含在请求体中,而非URL中。以下是...

    httpurlconnection 获取服务器数据并解析

    通过getInputStream()获取服务器返回的数据流。 ```java int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { InputStream in = connection.getInputStream(); }...

    android手机客户端获取服务器端的json数据的demo

    在Android开发中,获取服务器端的数据是常见的需求,特别是JSON格式的数据,因其轻量级、易解析的特性,被广泛应用于移动应用与后端服务之间的数据交换。本demo旨在展示如何在Android手机客户端通过WiFi连接服务器,...

Global site tag (gtag.js) - Google Analytics