接受第三方的post过来的xml,如果没有设置Content-Type: application/x-www-form-urlencoded。则可以通过流来解析
代码如下
BufferedReader in= new BufferedReader(new InputStreamReader(httpServletRequest.getInputStream()));
String s="";
StringBuffer sb=new StringBuffer();
while((s=in.readLine())!=null){
sb.append(s);
}
// dom解析xml
DocumentBuilderFactory buildFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder build = buildFactory.newDocumentBuilder();
Document document = build.parse(httpServletRequest.getInputStream(),"utf-8");
NodeList nodelist = document.getElementsByTagName("MO");
for (int i = 0; i < nodelist.getLength(); i++) {
longcodeArray.add(document.getElementsByTagName("LongCode").item(i).getFirstChild().getNodeValue().substring(1));
messageArray.add(document.getElementsByTagName("Message").item(i).getFirstChild().getNodeValue());
}
如果设置了Content-Type: application/x-www-form-urlencoded 则需要去parmmeterMap中间去取
List<String> longcodeArray=new ArrayList<String>();
List<String> messageArray=new ArrayList<String>();
try {
CreateLog log = new CreateLog();
HttpServletRequest httpServletRequest = this.getHttpServletRequest();
String keyandValue="";
String key="";
String value="";
Iterator<String> it=httpServletRequest.getParameterMap().keySet().iterator();
while(it.hasNext()){
key=it.next();
value = ((Object[])(httpServletRequest.getParameterMap().get(key)))[0].toString();
keyandValue=key+"="+value;
System.out.println(key+"= "+value);
}
if(keyandValue!=null){
//dom4j来解析xml字符串
Document document=DocumentHelper.parseText(keyandValue.toString());
Element root=document.getRootElement();
List mo=root.elements("MO");
for(int i=0;i<mo.size();i++){
Element longcode=((Element)mo.get(i)).element("LongCode");
Element message=((Element)mo.get(i)).element("Message");
longcodeArray.add(longcode.getText());
messageArray.add(message.getText());
}
}