HttpKit.readData获取参数出错

通过

String xmlMsg = HttpKit.readData(getRequest());

获取 post 参数报下面的错误,是什么问题呢?3.3版本

[ERROR]-[Thread: qtp242481580-31]-[com.jfinal.kit.LogKit.error()]: STREAMED
java.lang.IllegalStateException: STREAMED
at org.eclipse.jetty.server.Request.getReader(Request.java:849)
at com.jfinal.kit.HttpKit.readData(HttpKit.java:264)
at com.jcbase.controller.auth.BaiduPayApi.payNotify(BaiduPayApi.java:186)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.jfinal.aop.Invocation.invoke(Invocation.java:73)
at com.jfinal.plugin.activerecord.tx.Tx.intercept(Tx.java:77)



评论区

JFinal

2019-06-03 21:33

异常信息不全,缺少 cause 部分

建议在 Controller 中调用 getRawData() 来代替 HttpKit.readData。 前者可以调用无限次数,后者在每次请求到来时只能调用一次

北流家园网

2020-06-29 08:33

@JFinal 请问下getRawData() 能获取前台使用jquery ajax (type=get)的数据吗?我怎么试了几次都获取不到的。

JFinal

2020-06-29 11:05

@北流家园网 发送 context type 为 json 的就可以,代码如下:
$.ajax({
type: "post",
url: "http://localhost/action",
contentType: 'application/json; charset=UTF-8', // 关键参数
dataType: 'json',
data: jsonString,
success: function(ret) {
}
});

注意上面的参数:contentType: 'application/json; charset=UTF-8',

这个是 http 基础,与 jfinal 无关, jfinal 仅仅只是在服务端极端机械化地接收数据而已

北流家园网

2020-06-29 22:58

@JFinal当ajax 使用type=post时,getRawData可以获取到数据,如果type=get时,getRawData就无法获取到,需要用到get()才可以。

热门反馈

扫码入社