Java 从PUT HttpServletRequest获取参数?

Java 从PUT HttpServletRequest获取参数?,java,servlets,put,Java,Servlets,Put,我有一个试图处理PUT请求的HttpServlet,它有一些表单参数(通过“application/x-www-form-urlencoded”头发送)。对于POST,我有相同的设置,但由于某些原因,当我请求参数时,PUT请求出现为空: protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws { Map<String,String[]> params = req.getParam

我有一个试图处理PUT请求的HttpServlet,它有一些表单参数(通过“application/x-www-form-urlencoded”头发送)。对于POST,我有相同的设置,但由于某些原因,当我请求参数时,PUT请求出现为空:

protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws {
   Map<String,String[]> params = req.getParameterMap();
   System.out.println(params.size());
}
protectedvoiddoput(HttpServletRequest-req,HttpServletResponse-resp)抛出{
Map params=req.getParameterMap();
System.out.println(params.size());
}
参数的大小为0,即使我正在传入参数


是否有其他方法读取PUT请求的参数?

请参阅以下问题,似乎可以回答您的问题:


您必须将它们作为参数放在URL上。PUT的主体没有POST的语义,POST将其解释为表单参数。

Spring MVC提供FormContentFilter来解析PUT、PATCH和DELETE的表单数据,并将其作为servlet请求参数公开


如何从客户端执行PUT?您是否使用HTML表单并使用method=“PUT”提交?不,我使用了一个GUI客户端,用于测试,以及简单的CURLcommand@Nathan你能发布这个命令吗?谢谢,这个问题的方法肯定有效-如果我打印出inputStream,我会看到我传递的所有参数。知道为什么抓参数地图不起作用吗?除了设置PUT请求所需的内容类型之外,还有什么需要做的吗?我不确定,但我猜这是因为PUT方法的语义,即根据规范,PUT方法请求创建目标资源的状态,或将其替换为请求消息负载中包含的表示所定义的状态,因此我猜内容类型为“application/x-www-form-urlencoded”w.r.t PUT方法真的没有意义。从我的经验来看,似乎是这样。@PhilipRego是这样的,来自RFC。