java - Servlet 参数和 doPut

标签 java rest servlets

尝试使用 HttpServlet#doPut 从 PUT 请求中获取参数:

public void doPut(HttpServletRequest request, HttpServletResponse response) {
    String name = request.getParameter("name");
    // name is null
}

使用curl发送请求:

curl  -X PUT \
      --data "name=batman" \
      --header "Content-Type: text/plain" http://localhost:8080/sample.html

使用 doGet 和 GET curl 请求时效果很好。我错过了什么吗?

最佳答案

基于评论和进一步的研究,我意识到 Servlet 无法假设任何关于被放入服务器的数据,因此不会解析名称/值对。

以下解决方案似乎是处理通过 PUT 传递的任何数据的正确方法,并且可以解析为 XML、名称/值或其他任何形式。

BufferedReader br = new BufferedReader(new InputStreamReader(req.getInputStream());

String data = br.readLine();

关于java - Servlet 参数和 doPut,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/855835/

相关文章:

c# - 如何创建 JSON 以匹配/序列化到 WCF Rest 服务中的 DataContract

java - 直接访问隐藏JSP页面,但是如何访问目标页面呢?

java - 我的高级 for 循环有问题

java - 定义一个采用映射中参数的方法

java - 将跟踪从Docker容器发送到在VM中运行的Jaeger Docker容器的问题

java - 检查 hibernate 中允许值的约束注释

java - JAX-RS 2 : using Guava ListenableFuture for async resources

java - 使用 REST API 创建新站点

tomcat - 如何从 "ServletContext.log("Hello World !")"获取日志消息?

java - servlet 与 J2me 项目通信?