FORM元素的enctype属性指定了表单数据向服务器提交时所采用的编码类型,默认的缺省值是“application/x-www-form-urlencoded”。
然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。
在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。
Browser端<form>表单的ENCTYPE属性值为multipart/form-data,它告诉我们传输的数据要用到多媒体传输 协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法,<input>的type属性必须是file。
接受第三方的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()); } }
参考:
http://dwlovehcy.iteye.com/blog/1196336
http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2009/0222/342.html