接受第三方的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());
- }
- }