微信公衆號回調接口,解析參數
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;
}
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);獲取參數