获取 post 请求的原生数据
程序员文章站
2022-04-13 21:12:54
...
有时,有些请求提交的数据不是常见的 参数名:参数值 这种映射关系的键值对,如微信公众平台服务器向开发者的指定URL提交的数据,就是 xml 字符串,这时,无法通过java的request.getParameter("参数名")来取得,也无法通过php的$_POST['参数名']来取得,针对这种数据,解决办法如下:
request.setCharacterEncoding("utf-8"); StringBuilder buffer = new StringBuilder(); java.io.BufferedReader reader=null; try{ /** * getReader() * Retrieves the body of the request as character data using a BufferedReader * getInputStream() * Retrieves the body of the request as binary data using a ServletInputStream. */ reader = request.getReader(); String line=null; while((line = reader.readLine())!=null){ buffer.append(line); } }catch(java.io.IOException e){ e.printStackTrace(); }finally{ if(null!=reader){ try { reader.close(); } catch (java.io.IOException e) { e.printStackTrace(); } } } String res = buffer.toString(); System.out.print(res);
补充说明: getReader()与getInputStream()一次请求过来,只能调用一次,并且二者不可同时调用。
Php代码
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
补充说明:
html from enctype 属性规定在将表单数据发送到服务器之前如何对其进行编码,默认的缺省值是“application/x-www-form-urlencoded”。
application/x-www-form-urlencoded,会将传输的数据编码成键值对的形式,后端可以直接通过request.getParameter()获取
text/plain,数据以纯文本形式进行编码,其中不含任何控件或格式字符。
multipart/form-data,传输的数据要用到多媒体传输协议,由于多媒体传输的都是大量的数据,所以规定上传文件必须是post方法。
在文件上传时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。
下一篇: 关于独立安装的详细介绍
推荐阅读
-
MySQL获取某个时间范围内的数据
-
google file system 用PHP获取Google AJAX Search API 数据的代码
-
php获取mysql数据库中的所有表名的代码_PHP
-
php curl 获取https请求的2种方法,curlhttps
-
求PHP 上什么控件或函数可以发起XML请求和获取回数据解决办法
-
Codeigniter检测表单post数据的方法_php实例
-
如何POST一个JSON格式的数据给Restful服务,jsonrestful_PHP教程
-
获取WebService的请求信息方法实例
-
Select2在使用ajax获取远程数据时显示默认数据的方法
-
ajax动态获取数据库中的数据方法