注意:

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));
}

最新文章

  1. Web APi之异常处理(Exception)以及日志记录(NLog)(十六)
  2. Android_AsyncTask异步任务(一)
  3. 阻止Infinitescroll.js无限滚动加载页面解决方法
  4. 如何在Eclipse配置Tomcat服务器
  5. c#常见stream操作
  6. iOS中"查看更多/收起"功能实现
  7. 高可用高性能分布式文件系统FastDFS实践Java程序
  8. 分布式进阶(五)之JSVC配置
  9. 【Maven篇】---解决Maven线上部署java.lang.ClassNotFoundException和no main manifest attribute解决方法
  10. Django ORM中datetiem数据类型字段无法对比处理办法
  11. XLSReadWriteII5使用参考
  12. webpack-dev-server不是内部或外部命令
  13. iic 之24C256存储器 及PCF8563
  14. systemctl -- 系统服务管理器 【转】
  15. [LeetCode&Python] Problem 118. Pascal's Triangle
  16. Silverlight-MEF-DEMO
  17. jquery miniui 学习笔记
  18. Swift网络封装库Moya中文手册之Authentication
  19. JVM调优总结(转)
  20. python2-url编解码

热门文章

  1. 【iOS bug记录】UICollectionviewCell刷新变得这么莫名其妙?
  2. Java面试题_第三阶段(Spring、MVC、IOC、AOP、DI、MyBatis、SSM、struts2)
  3. Linux上用IP转发使内部网络连接互联网
  4. (办公)记事本_Linux帮助命令
  5. css 重点知识 和 bug 解决方法
  6. CMake工程找不到相应的cuDNN版本的问题
  7. 对于prim的一个有趣但有点奇怪的想法
  8. mysql 排它锁之行锁、间隙锁、后码锁
  9. nltk词性标注
  10. Spring Bean Expression Language(EL)