您的位置:首页 > 理论基础 > 计算机网络

微信公众号回调接口HttpServletRequest 操作

2016-09-10 13:57 246 查看
微信公众号回调接口,解析参数

1、获取request 参数

Map<?, ?>  parameterMap = request.getParameterMap();


2、map 转json

JSONObject requestParam = JSONObject.fromObject((parameterMap==null||parameterMap.isEmpty())?"{}":parameterMap);


3、读取request

private String parse(HttpServletRequest request) {
BufferedReader buf = null;
try {
buf = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF-8"));
StringBuilder sb = new StringBuilder();
String line = null;
while (null != (line = buf.readLine())) {
sb.append(line);
}
if (sb.length() > 0) {
return sb.toString();
}
} catch (Exception e) {
log.error("weimob parse request error!", e);
return null;
} finally {
try {
buf.close();
} catch (Exception e) {
log.error("weimob parse request error!", e);
}
}
return null;
}


4、解析读取request内容,将xml格式的字符串解析成map(针对子节点中没有重复的节点名)
xmlDoc为parse方法读取到的request内容,解析为map

private Map<String, String> parseXMl(String xmlDoc) throws Exception {
if (StringUtils.isBlank(xmlDoc)) {
return null;
}
StringReader xmlString = new StringReader(xmlDoc);
// 创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
InputSource source = new InputSource(xmlString);
// 创建一个新的SAXBuilder
SAXBuilder saxb = new SAXBuilder();
// 通过输入源构造一个Document
Document doc = saxb.build(source);
Element root = doc.getRootElement();
// 得到根元素所有子元素的集合
List<?> node = root.getChildren();
Map<String, String> m = new HashMap<String, String>();
if (node.size() > 0) {
for (int i = 0; i < node.size(); i++) {
Element el = (Element) node.get(i);
m.put(el.getName(), el.getText());
}
} else {
m.put(root.getName(), root.getText());
}
return m;
}


requestInputMap.get(key);获取参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  微信