035.[转] 获取HttpServletRequest请求Body中的内容
注意:
HttpServletRequest 请求中的 body 内容仅能调用 request.getInputStream(), request.getReader()和request.getParameter("key") 方法读取一次,重复读取会报 java.io.IOException: Stream closed 异常。
原文:https://blog.csdn.net/pengjunlee/article/details/79416687
- public String getBodyString(HttpServletRequest request) throws IOException {
- StringBuilder sb = new StringBuilder();
- InputStream inputStream = null;
- BufferedReader reader = null;
- try {
- inputStream = request.getInputStream();
- reader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName("UTF-8")));
- String line = "";
- while ((line = reader.readLine()) != null) {
- sb.append(line);
- }
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- if (inputStream != null) {
- try {
- inputStream.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if (reader != null) {
- try {
- reader.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return sb.toString().trim();
- }
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import javax.servlet.ServletInputStream;
- import javax.servlet.http.HttpServletRequest;
- public class HttpServletRequestReader
- {
- // 字符串读取
- // 方法一
- public static String ReadAsChars(HttpServletRequest request)
- {
- BufferedReader br = null;
- StringBuilder sb = new StringBuilder("");
- try
- {
- br = request.getReader();
- String str;
- while ((str = br.readLine()) != null)
- {
- sb.append(str);
- }
- br.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- finally
- {
- if (null != br)
- {
- try
- {
- br.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- }
- return sb.toString();
- }
- // 方法二
- public static void ReadAsChars2(HttpServletRequest request)
- {
- InputStream is = null;
- try
- {
- is = request.getInputStream();
- StringBuilder sb = new StringBuilder();
- byte[] b = new byte[4096];
- for (int n; (n = is.read(b)) != -1;)
- {
- sb.append(new String(b, 0, n));
- }
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- finally
- {
- if (null != is)
- {
- try
- {
- is.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- }
- }
- // 二进制读取
- public static byte[] readAsBytes(HttpServletRequest request)
- {
- int len = request.getContentLength();
- byte[] buffer = new byte[len];
- ServletInputStream in = null;
- try
- {
- in = request.getInputStream();
- in.read(buffer, 0, len);
- in.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- finally
- {
- if (null != in)
- {
- try
- {
- in.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- }
- return buffer;
- }
- }
----------------------
- Enumeration enu=request.getParameterNames();
- while(enu.hasMoreElements()){
- String paraName=(String)enu.nextElement();
- System.out.println(paraName+": "+request.getParameter(paraName));
- }
035.[转] 获取HttpServletRequest请求Body中的内容的更多相关文章
- 获取HttpServletRequest请求Body中的内容
在实际开发过程中,经常需要从 HttpServletRequest 中读取HTTP请求的body内容,俗话说的好”好记性不如烂笔头“,特在此将其读取方法记录一下. import java.io.Buf ...
- javascript怎么获取指定url网页中的内容
javascript怎么获取指定url网页中的内容 一.总结 一句话总结:推荐jquery中ajax,简单方便. 1.js能跨域操作么? javascript出于安全机制不允许跨域操作的. 二.用ph ...
- SpringMVC源码之Handler注册、获取以及请求controller中方法
总结 对requestMappingHandlerMapping进行initializeBean时register Handler http开始请求时,initHandlerMappings,Disp ...
- linux shell 脚本获取和替换文件中特定内容
1.从一串字符串中获取特定的信息 要求1:获取本机IP:menu.lst为系统镜象的IP配置文件,需要从中获取到本机IP信息(从文件获取信息) timeout title live find --se ...
- win32 获取 HotKey 控件中的内容(HKM_GETHOTKEY)
windows给我们提供了一个对话框控件HotKey非常好用,在设置热键的时候用起来很爽,但是一直百度就是没找到在win32下怎样通过消息获取这个控件里面的内容,找到的都是用MFC封装好的控件类来操作 ...
- [技巧篇]11.JavaScript原生态如何获取浏览器请求地址中的参数
var getAccessParams = function(){ var i,ilen,strs,keyName,keyValue, params={}, path = window.locatio ...
- 获取HTTP请求头中的地址
技术交流群:233513714 public static String getIpAddr(HttpServletRequest request) { String ip = request.get ...
- [转]iOS技巧之获取本机通讯录中的内容,解析通讯录源代码
一.在工程中添加AddressBook.framework和AddressBookUI.framework 二.获取通讯录 1.在infterface中定义数组并在init方法中初始化 ? 1 2 3 ...
- 正则获取 某段 DIV 中 的内容
string html = "<div class='aa'><div class='left'>324324<div>dsfsdf</div> ...
随机推荐
- Ubuntu1804中重新认识docker
这又是一篇充数的笔记……之前在Ubuntu中折腾过好几次了,但是关于他俩之间的故事总是参杂着第三者,不太纯粹,这一次只说她两之间的故事. 上一篇笔记弄好了Ubuntu环境.之后就是准备迎娶docker ...
- 如何在windows下安装linux双系统
首先是看这篇博客,讲得很详细,但是有一点小小的区别,这里把整个过程回顾一下. https://www.cnblogs.com/masbay/p/10745170.html 第一步,刻盘,将一个u盘刻录 ...
- IT兄弟连 HTML5教程 CSS3属性特效 边框
通过CSS3,我们能够创建圆角边框,向矩形添加阴影,使用图片来绘制边框.并且不需使用设计软件,比如photoshop. 1 边框图片border-image border-image为边框应用图片, ...
- 1.编译spring源码
本文是作者原创,版权归作者所有.若要转载,请注明出处 下载spring源码,本文用的是版本如下: springframework 5.1.x, IDE工具idea 2019.2.3 JAVA ...
- idea自用快捷键(非常实用)
最近看了下idea的快捷键,不禁感慨idea真是太强大了,这里记录一下我常用的快捷键 Ctrl+F:在当前文件中查找 Ctrl+R:替换字符串 Alt + shift + 鼠标点击 多处同时编辑 ...
- C#中try catch中throw ex和throw方式抛出异常有何不同_异常捕获堆栈丢失问题
前言,最近遇到一个使用try-catch异常捕获后记录一下日志,然后再抛出该异常后,异常堆栈里无法显示准确的堆栈地址的问题? 其实以前也遇到过类似问题,没有重视,这次好好研究了下,并上度娘上找了找 ...
- code snippet:依赖属性propa的小技巧
很早之前就玩过VS里面的code snippet,相当方便. 今天在用prop自动属性代码时,无意中用了一下propa,然后就自动出来了依赖属性的代码片段,太方便了,尤其是对于WPF新手来说,比如我这 ...
- Java生鲜电商平台-深入理解微服务SpringCloud各个组件的关联与架构
Java生鲜电商平台-深入理解微服务SpringCloud各个组件的关联与架构 概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留 ...
- vue-router精简demo
cnpm install vue-router --save-dev 或者 cnpm install vue-router --save 全局引用VueRouter import VueRouter ...
- Zeus:1 Vulnhub Walkthrough
主机层面扫描: ╰─ nmap -p1-65535 -sV -A 10.10.202.14 PORT STATE SERVICE VERSION21/tcp open ftp vsftpd 2.0.8 ...