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
相关推荐
在Web开发中,当涉及到通过HTTP协议向服务器发送POST请求时,我们经常需要选择不同的数据编码类型,主要是`application/x-www-form-urlencoded`和`multipart/form-data`。这两种编码方式各有其适用场景,主要取决于...
如果需要上传文件或处理复杂的数据结构,就需要使用multipart/form-data编码格式,而不是application/x-www-form-urlencoded。 application/x-www-form-urlencoded是HTML表单提交时使用的最常见的编码格式,它广泛...
值得一提的是,在HTML中,表单上传文件时必须设置其enctype属性为multipart/form-data,因为默认值是application/x-www-form-urlencoded,这不支持文件上传。 JavaScript中,XMLHttpRequest Level 2引入了FormData...
通常前端通过POST请求向服务器端提交数据格式有4中,分别是”application/x-www-form-urlencoded”格式、” multipart/form-data”格式、”application/json”格式和”text/xml”格式。通常最常见的是”application/...
互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术...
multipart/form-data主要是为了解决application/x-www-form-urlencoded编码格式在传输大量二进制数据或包含非ASCII字符文本时的低效问题。multipart/form-data的数据由多个part组成,part间通过boundary分隔符进行...
`application/x-www-form-urlencoded`适合简单的键值对数据,`multipart/form-data`适用于文件上传,而`application/json`和`application/xml`则更适合复杂的数据结构和前后端之间结构化的数据交换。在实际开发中,...
总结,`multipart/form-data`和`application/x-www-form-urlencoded`的主要区别在于: - `multipart/form-data`适合上传文件和键值对,能处理二进制数据,而`application/x-www-form-urlencoded`仅处理键值对,且...
网络连接, “POST”, “/submit.php”, .post_data, “Content-Type: application/x-www-form-urlencoded”) ``` 4. **处理响应**:`发送HTTP请求`会返回服务器的响应,可以使用“读取网络流”命令读取响应内容。...
这些库都支持POST请求,其中包含一个名为“Content-Type”的头信息,设置为“application/x-www-form-urlencoded”或“multipart/form-data”,以适应Base64字符串的传输。 3. **C#接收数据**:在C#服务器端,可以...
同时,我们也可以使用其他格式,如 application/x-www-form-urlencoded,来上传文件和表单数据。 HTTP POST 方式上传文件是一种常用的技术,它允许客户端将文件发送到服务器端,以便在服务器端进行处理和存储。在...
默认情况下,`enctype`的值为`"application/x-www-form-urlencoded"`,这是最常见的情况。在这种模式下,表单内的所有数据会被URL编码,即特殊字符(如空格)会转换成ASCII的十六进制表示,例如空格变为"+",逗号...
application/x-www-form-urlencoded:表单 enctype 属性的默认值。这种编码方案使用有限的字符集,当使用了非字母和数字时,必须用”%HH”代替(H 代表十六进制数字)。对于大容量的二进制数据或包含非 ASCII 字符的...
contentType: "application/x-www-form-urlencoded; charset=GBK", // headers:{"ClientCallMode" : "ajax"},//添加请求头部 enctype="multipart/form-data" success: function(data){ if(data.msg=="success...
或 multipart/form-data。为二进制数据使用 多重编码 是否幂等 幂等 非幂等 HTTP方法 2、GET和POST比较 GET POST 长度限制 http协议没有限制,但是实际浏览器或服务 器有(最大2048) 理论上没有,可能会收到服务器...
默认情况下,表单数据使用`application/x-www-form-urlencoded`编码,这种编码方式不适用于文件上传。为了上传文件,我们需要在`<form>`标签中添加`enctype`属性,并将其设置为`multipart/form-data`。这是HTML5中...
application/x-www-form-urlencoded application/json , text/plain 从模型构建HTTP请求/响应原始消息: 方法,协议,协议版本/状态码,原因 查询参数 标头 饼干 正文,支持以下contentTypes: multipart/...
multipart / form-data格式,如RFC 7578所述。enctype = multipart / form-dataHTML表单以...通常在表单具有文件上载输入字段时使用此enctype,因为默认的application / x-www-form-urlencoded无法处理文件上载。 he
post数据,是直接在http协议头将Content-Type设为application/x-www-form-urlencoded,这样服务器会将提交的数据,当作表单数据处理。发送的数据格式也为:userid=lilu&data=post图片类&name=天漏客。而post图片则是...