尝试使用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,Name/Value或其他任何数据.
BufferedReader br = new BufferedReader(new InputStreamReader(req.getInputStream()); String data = br.readLine();