struts2 接口如何接收客户端提交的json数据
CreationTime--2018年6月20日15点54分
Author:Marydon
1.情景还原
使用struts2写的接口(服务端),要求对方(客户端)以json格式传输数据,但是使用request.getParameter()获取不到
2.问题剖析
application/x- www-form-urlencoded是Post请求默认的请求体内容类型,也是form表单默认的类型,可以使用request.getParameter()方法来获取请求参数值;
但是,当请求内容不是该类型时,就不能使用request.getParameter()方法来获取请求参数值了,具体如下:
当请求体内容为application/json类型时,需使用request.getReader()方法来获取请求内容值(字符流);
当请求体内容为multipart/form-data类型时,需使用request.getInputStream()方法来获取请求内容值(字节流)。
3.解决方案
所需jar包
struts2-core-2.3.34.jar;
导入
import java.io.BufferedReader;import java.io.IOException;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;
/** * 获取接口传递的JSON数据 * @explain * @param request HttpServletRequest对象 * @return JSON格式数据 */public static JSONObject getJsonReqData () { ???// 获取Request对象 ???HttpServletRequest request = ServletActionContext.getRequest(); ???StringBuffer sb = new StringBuffer(); ???try { ???????// json格式字符串 ???????String jsonStr = ""; ???????// 获取application/json格式数据,返回字符流 ???????BufferedReader reader = request.getReader(); ???????// 对字符流进行解析 ???????while ((jsonStr = reader.readLine()) != null) { ???????????sb.append(jsonStr); ???????} ???} catch (IOException e) { ???????e.printStackTrace(); ???} ???????// 将json字符串(jsonStr)-->json对象(JSONObject) ???JSONObject jo = JSONObject.fromObject(sb.toString()); ???return jo;}
相关推荐:
- java 发送post请求的2种方式(form、json)
struts2 接口如何接收客户端提交的json数据
原文地址:https://www.cnblogs.com/Marydon20170307/p/9204376.html