解决:Rest类无法取得HTTP PUT请求发送的参数



rest类通过String id = request.getParameter("id");可以取得url传递过来的id参数值

但是,Put中的参数无法取得,如下


以下内容来自:http://dbscx.iteye.com/blog/828167

PUT和POST的定义: 
使用PUT和POST插入新资源方面所起的作用的争议。HTTP1.1协议中都有新增和更新的定义。
由于所有的浏览器在提交 HTML 表单数据时都不支持 PUT方法(支持 GET和 POST),所以很难确定在哪种情况下使用哪种方法最为明智。
RESTful的定义是:
GET用于检索已知的 Resource 表示。
POST用于创建新的、动态命名的 Resource。
PUT用于编辑已知 Resource。不用它来创建 Resource。
DELETE用于删除已知 Resource。

问题: 
HTTP协议PUT方法使用HTTP BODY提交参数时,使用tomcatAPI,httprequest.getParameter();无法获得参数值。
注:若采用GET方法的URL后带参数,可以获得参数值。

 

原因: 
可能是API只能解析GET、POST方式的表单提交。其他一些传统的MVC框架也有类似现象

解决:

Java代码   收藏代码
  1. protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {  
  2.     BufferedReader in = new BufferedReader(new InputStreamReader(req.getInputStream()));  
  3.     String line;  
  4.     while ((line = in.readLine()) != null)  
  5.         System.out.println(line);  
  6. }  

使用原始的输入流手动解析传入参数。

获取HTTP请求类型,比如:GET、POST、PUT、DELETE等

HttpServletRequest request;

request.getMethod();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值