一、request.getReader()和DocumentHelper.parseText()
import java.io.BufferedReader;
import javax.servlet.http.HttpServletRequest;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
private String parseRequestBody(HttpServletRequest request,String uuid,Logger log) throws Exception{
BufferedReader br = request.getReader();
String str="";
String wholeStr = "";
while((str = br.readLine()) != null){
wholeStr += str;
}
log.info(uuid+"获取到的request的body:"+wholeStr);
wholeStr = wholeStr.replaceAll(" ", "");
Document document = DocumentHelper.parseText(wholeStr);
Element root = document.getRootElement();
String msgType = root.elementText("MsgType");
}
二、request.getInputStream()和new SAXReader().read(输入流);
import java.io.InputStream;
import java.io.Writer;
import javax.servlet.http.HttpServletRequest;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public static Map<String, String> parseXml(HttpServletRequest request) throws Exception {
// 将解析结果存储在HashMap中
Map<String, String> map = new HashMap<String, String>();
// 从request中取得输入流
InputStream inputStream = request.getInputStream();
// 读取输入流
SAXReader reader = new SAXReader();
Document document = reader.read(inputStream);
// 得到xml根元素
Element root = document.getRootElement();
// 得到根元素的所有子节点
@SuppressWarnings("unchecked")
List<Element> elementList = root.elements();
// 遍历所有子节点
for (Element e : elementList)
map.put(e.getName(), e.getText());
// 释放资源
inputStream.close();
inputStream = null;
return map;
}
参考:https://blog.csdn.net/tuposky/article/details/40589313
三、二进制读取
public void binaryReader(HttpServletRequest request) {
int len = request.getContentLength();
ServletInputStream iii = request.getInputStream();
byte[] buffer = new byte[len];
iii.read(buffer, 0, len);
}