035.[转] 获取HttpServletRequest请求Body中的内容
2024-08-24 08:39:02
注意:
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));
}
最新文章
- Web APi之异常处理(Exception)以及日志记录(NLog)(十六)
- Android_AsyncTask异步任务(一)
- 阻止Infinitescroll.js无限滚动加载页面解决方法
- 如何在Eclipse配置Tomcat服务器
- c#常见stream操作
- iOS中";查看更多/收起";功能实现
- 高可用高性能分布式文件系统FastDFS实践Java程序
- 分布式进阶(五)之JSVC配置
- 【Maven篇】---解决Maven线上部署java.lang.ClassNotFoundException和no main manifest attribute解决方法
- Django ORM中datetiem数据类型字段无法对比处理办法
- XLSReadWriteII5使用参考
- webpack-dev-server不是内部或外部命令
- iic 之24C256存储器 及PCF8563
- systemctl -- 系统服务管理器 【转】
- [LeetCode&;Python] Problem 118. Pascal's Triangle
- Silverlight-MEF-DEMO
- jquery miniui 学习笔记
- Swift网络封装库Moya中文手册之Authentication
- JVM调优总结(转)
- python2-url编解码
热门文章
- 【iOS bug记录】UICollectionviewCell刷新变得这么莫名其妙?
- Java面试题_第三阶段(Spring、MVC、IOC、AOP、DI、MyBatis、SSM、struts2)
- Linux上用IP转发使内部网络连接互联网
- (办公)记事本_Linux帮助命令
- css 重点知识 和 bug 解决方法
- CMake工程找不到相应的cuDNN版本的问题
- 对于prim的一个有趣但有点奇怪的想法
- mysql 排它锁之行锁、间隙锁、后码锁
- nltk词性标注
- Spring Bean Expression Language(EL)