【发布时间】:2015-03-27 13:36:52
【问题描述】:
在 Java servlet 中,您可以从 POST 请求中读取 JSON,例如通过
new JSONObject(toString(httpRequest.getInputStream()))
现在除了 JSON 之外,我想在 URL 中指定参数,它们可以通过以下方式读取:
httpRequest.getParameterMap().get("someURLParam")
一切正常(我在服务器端使用 AJAX 发布请求和码头)
但是
正如javax.servlet.ServletRequest.getParamter(String) 的 javadocs 所说,这两种方法是否以及何时相互影响,我很担心和困惑:
如果参数数据是在请求体中发送的,如发生 使用 HTTP POST 请求,然后直接通过 ServletRequest.getInputStream 或 ServletRequest.getReader 可以 干扰该方法的执行。
在我的情况下是什么意思?还是仅在内容类型为x-www-form-urlencoded 时才会干扰?或者仅当使用getParameter 和getParameterMap 方法就可以了?
【问题讨论】:
-
我查看了码头的来源,他们确实只在 getParameterMap 中调用 getInputStream 如果:形成编码内容 && 尚未读取 && (放置或发布)。但是对于所有指定的容器都是这种情况吗?
-
这个答案说它仅适用于 urlendoded 发布数据,但不支持任何官方文档的声明...stackoverflow.com/a/3831791/438742
-
答案有点混乱,因为我显然可以在没有表单编码类型的情况下读取参数
-
你怎么做?即使 POST 正文不是 form-urlencoded?