07-HTTP-Request获取请求体数据方法getReader()\getInputStream()

这篇具有很好参考价值的文章主要介绍了07-HTTP-Request获取请求体数据方法getReader()\getInputStream()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数。

1、getReader()方法用于获取HTTP请求体的字符流,可以用于读取HTTP请求体的文本数据。getReader()方法返回BufferedReader对象,该对象提供了readLine()方法和read()方法,可以用于逐行或逐个字符地读取HTTP请求体的文本数据。

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.BufferedReader;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MyController {
    
    @RequestMapping("/myurl")
    public void myMethod(HttpServletRequest request) throws IOException {
        BufferedReader reader = request.getReader();
        String line = null;
        while ((line = reader.readLine()) != null) {
            // 处理读取到的数据
        }
        
        // TODO: 处理HTTP请求的业务逻辑
    }
}

在这个示例中,我们首先使用request.getReader()方法获取BufferedReader对象,然后使用while循环从对象中逐行读取数据。需要注意的是,输入流中的数据格式由HTTP请求头中的Content-Type字段决定。

另外需要注意的是,当使用getReader()方法获取HTTP请求体的字符流时,就不能再使用getInputStream()方法获取HTTP请求体的输入流了,否则会抛出IllegalStateException异常。原因是,HTTP请求体的数据只能被读取一次,如果已经被读取过了,就无法再次读取。

2、getInputStream()方法用于获取HTTP请求体的输入流,可以用于读取HTTP请求体的二进制数据。getInputStream()方法返回ServletInputStream对象,该对象提供了read(byte[] b, int off, int len)方法和read()方法,可以用于从输入流中读取HTTP请求体的二进制数据。

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import javax.servlet.ServletInputStream;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MyController {
    
    @RequestMapping("/myurl")
    public void myMethod(HttpServletRequest request) throws IOException {
        ServletInputStream inputStream = request.getInputStream();
        byte[] buffer = new byte[1024];
        int bytesRead = -1;
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            // 处理读取到的数据
        }
        
        // TODO: 处理HTTP请求的业务逻辑
    }
}

使用request.getInputStream()方法获取ServletInputStream对象,然后使用while循环从对象中读取数据。文章来源地址https://www.toymoban.com/news/detail-730055.html

到了这里,关于07-HTTP-Request获取请求体数据方法getReader()\getInputStream()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • el-upload使用http-request实现图片上传,回显,放大效果

            在项目开发中,为了实现上传文件的功能,我们需要用到el-upload这个组件,为了实现回显放大效果,就要用到el-image这个组件了。官方文档中介绍了上传的两种方法,一个是使用action,其参数必须要上传的地址;另一个是http-request,该方法覆盖默认的上传行为,可

    2024年02月08日
    浏览(64)
  • Vue+element Upload利用http-request实现第三方地址图片上传

    Vue + element (el-upload)中的 :http-request 图片上传 java后端上传接口,利用 OSS 存储图片 postman测试 图片上传功能及方法 对比: 服务端签名后直传 使用element UI 的el-upload实现第三方地址图片上传,替换原来的action方法 直接上传方法如下:上传图片根据action地址请求后获取到图片u

    2023年04月26日
    浏览(42)
  • el-upload实现自定义携带参数上传文件( :http-request 方式)

    1. el-upload组件 使用 :http-request 自定义上传方法,action仍然要有,随便起个名字即可, 注意使用 :http-request 之后, :on-success, :on-error 指令是不会触发的 自定义上传 函数为  uploadFile 2. 封装上传方法(定义传输请求头,传输格式) 在main.js中将封装好的方法加入全局,后面可直接

    2024年02月11日
    浏览(83)
  • Servlet API中使用Request对象获取HTTP协议请求内容

    在Servlet API中,定义了一个HttpServletRequest接口,它继承自ServletRequest接口,专门 用来封装HTTP请求消息。 由于HTTP请求消息分为请求行、请求头和请求体三部分,因此,在HttpServletRequest接口中定义了获取请求行、请求头和请求消息体的相关方法. Web服务器【tomcat】收到客户端的

    2024年02月11日
    浏览(52)
  • ElementUi 关于 el-upload的自定义上传(http-request)的使用

       在开发中 遇到如下需求,要求前端传参并导入excel表格。导入失败,要弹出错误信息,同时导出错误信息的excel表格,导入成功提示信息即可。 参考官方文档,把上传需要的属性加加入使用   改造之前: 设置headers信息 在el-upload标签中加入http-request ,如下: 具体操作方法

    2024年02月01日
    浏览(40)
  • Spring/SpringBoot 过滤器修改、获取http 请求request中的参数 和 response返回值,比如修改请求体和响应体的字符编码

    通过自定义filter,RequestWrapper,ResponseWrapper 处理请求和响应数据,比如修改请求体和响应体的字符编码 1.request 和 response 中的数据都是 存在流中的(缓存中)获取一次就没有了,需要重新写回去。所以需要两个包装类分别继承HttpServletRequestWrapper 和 HttpServletResponseWrapper 对 r

    2024年02月15日
    浏览(42)
  • 使用Flask.Request的方法和属性,获取get和post请求参数(二)

    在Python发送Post、Get等请求时,我们使用到requests库。Flask中有一个request库,有其特有的一些方法和属性,注意跟requests不是同一个。 用于服务端获取客户端请求数据。注意:是未经任何处理的原始数据而不管内容类型,如果数据时json的,则取得是json字符串,排序和请求参数

    2024年02月13日
    浏览(46)
  • 【Java 进阶篇】Java Request 获取请求体数据详解

    在Java Web开发中,获取HTTP请求的请求体数据是一项常见任务。HTTP请求的请求体通常包含了客户端提交的数据,例如表单数据、JSON、XML等。在Java中,可以使用 HttpServletRequest 对象来获取HTTP请求的请求体数据。本文将详细解释如何使用Java获取HTTP请求的请求体数据,并提供示例

    2024年02月03日
    浏览(41)
  • C# 通过 HttpWebRequest发送数据以及服务器通过Request请求获取数据

    C#中HttpWebRequest的用法详解 可参考: C#中HttpWebRequest的用法详解 C# HttpWebRequest详解 C# 服务器通过Request获取参数 可参考: C# WebService 接口 通过Request请求获取json参数 1、后台程序发送HTTP请求的Class,服务器端也要添加该类 2、服务端返回HTTP请求的数据class,客户端也要有 1、后台

    2024年02月06日
    浏览(59)
  • 【Jmeter】HTTP请求(HTTP Request) - 配置基本HTTP请求

    右击 Thread (线程组) 鼠标移至 Add (添加) → Sampler (取样器) 点击 HTTP Rrequest (HTTP请求头) 即可完成HTTP请求新建 进入 HTTP Rrequest (HTTP请求头) 页面 输入 Protocol (传输协议类型) ,不输入默认为HTTP请求 输入 Server Name or IP (服务器或IP地址) 输入 Port Number (端口号),没有端口号则不输入

    2024年02月14日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包