播放获取json请求参数

Posted

技术标签:

【中文标题】播放获取json请求参数【英文标题】:Play get json request parameters 【发布时间】:2015-09-29 12:08:25 【问题描述】:

我正在使用jQuery Datatable 插件,我想在我的控制器操作中获取发送到服务器的默认参数,如链接所示。

这是我的ajax请求代码

$(document).ready(function() 
        $('#example').DataTable( 
            "processing": true,
            "serverSide": true,
            "ajax": 
                "url": "getTable",
                "type": "POST"
            
         );
     );

这是我的控制器操作代码

public Result ajaxDisplayTable() 
        Logger.info("This is just another method for ajax post action call...");
        String userAgent = request().getHeader("User-Agent");
        Logger.info("user agent =  "+ userAgent);
        RequestBody body = request().body();
        Logger.info("bare body = "+ body);
        Logger.info("json ... "+ body.asJson());
        Logger.info("body as json = " + body.asText());
        return ok("Got json: " );

请求被发送到服务器并且被调用的动作方法被打印出来,但是 body.asJson() 和 body.asText() 总是为空,如下图所示。

如下图所示

请求参数作为 application/json 传递,在这里纠正我如果我错了,那么为什么 body.asJson() 为 null,如何在 action 方法中获取所有请求参数?我正在使用 Play 2.4.2 版本(Damiya)。

【问题讨论】:

Content-type,它是x-www-form-urlencoded,它不是JSON。也许你应该改用body.asFormUrlEncoded(),见Default body parser: AnyContent? 接受是什么:application/json? 这是浏览器接受的响应,见Accept。 【参考方案1】:

您的请求以application/x-www-form-url-encoded 发送,请参阅Content-type 标头。您需要使用body.asFormUrlEncoded() 而不是body.asJson()

public Result ajaxDisplayTable() 
    RequestBody body = request().body();
    final Map<String, String[]> values = body.asFormUrlEncoded();
    final String valDraw = values.get("draw")[0];

更多信息请参见Body parsers。

【讨论】:

以上是关于播放获取json请求参数的主要内容,如果未能解决你的问题,请参考以下文章

java中请求参数action怎么获取

如何获取PUT请求中放在body里面的参数

Jmeter 将上一个请求的结果作为下一个请求的参数

服务器put请求获取不到参数

http GET 请求的参数怎么传递,放在body里用json形式后台request读流获取不到数据。

struts2怎样获取AJAX post请求传递的数据