`
dbscx
  • 浏览: 73224 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

HTTP协议PUT方法获取参数问题

阅读更多

早上群里有人说POST方法提交改成PUT就获取不到参数。
遂对PUT进行一番研究。

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框架也有类似现象

解决:

protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    BufferedReader in = new BufferedReader(new InputStreamReader(req.getInputStream()));
    String line;
    while ((line = in.readLine()) != null)
        System.out.println(line);
}

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









 

0
0
分享到:
评论

相关推荐

    PHP获取网站的相关参数

    $_SERVER['SERVER_PROTOCOL'] #请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。 $_SERVER['REQUEST_METHOD'] #访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。 $_SERVER['QUERY_STRING'...

    对Django 中request.get和request.post的区别详解

    POST和GET是HTTP协议定义的与服务器交互的方法。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。另外,还有PUT和DELETE方法。 POST和GET都可以与服务器完成查,改,增,删操作。 GET提交,请求的数据会...

    HttpClient以及获取页面内容应用

    2. 以可扩展的面向对象的结构实现了Http全部的方法(GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE)。 3. 支持HTTPS协议。 4. 通过Http代理建立透明的连接。 5. 利用CONNECT方法通过Http代理建立隧道的https...

    curl命令详解.zip

    它可以执行各种 HTTP 操作,如 GET、POST、PUT、DELETE 等,并支持许多不同的协议,如 FTP、SMTP、POP3、IMAP 等。 总的来说,curl 命令是一个功能强大的工具,支持多种协议和功能,可以在命令行中完成常见的网络...

    GO语言实现基于Raft共识协议的KV数据库.zip

    本项目基于 Raft 分布式共识协议,实现一个简单 KV 数据库。该数据库支持 3 个操作,即 GET、PUT、APPEND。GET 操作能够获取一个 Key 对应的 Value。PUT 操作能够将一个 Key 对应的 Value 写入。APPEND 操作能够将...

    ThinkPHP v3.0.1 开发板.zip

    Action类增加_param方法支持 可以自动根据当前提交类型 获取参数 Action类的_get _post方法支持多函数过滤 改进ajaxReturn方法 改进success和error方法 增加自动验证的规则 分组模式下 模型分组可以自动加载 ...

    蓝牙协议及其源代码分析.rar

    1.1.3 蓝牙协议体系结构........ PAGEREF _Toc120615559 \h 14 1.1.4 蓝牙应用模型及协议栈................. PAGEREF _Toc120615560 \h 17 1.1.5 蓝牙技术的应用............ PAGEREF _Toc120615561 \h 19 1.2 金瓯...

    流媒体音视频技术:grpc协议实现流媒体传输,proto消息体中的流类型嵌套

    stream流类型在grpc的实际项目中是出现频率很高的数据类型,一般是位于交互参数或者返回值的位置: rpc Get_Stream(request) returns(stream response){}//获取数据流 rpc Put_Stream(stream request) returns...

    cms后台管理

    //获取传入参数,列表样式,根据不同的参数获取不同的样式列表 String listStyle = DirectiveUtils.getString(PARAM_STYLE_LIST, params); if (InvokeType.sysDefined == type) { if (StringUtils.isBlank(list...

    serial-instrument:Docker容器为串行设备创建套接字接口

    微型计算机和串行仪器加电后,微型计算机将自动读取所有可用的仪器参数(即设定点,值等)并将其发布到MQTT代理,并提供一个接口以使用HTTP或OPC进行获取UA。 通过发送以下JSON模式作为MQTT有效负载,HTTP PUT的...

    Deep3DFaceReconstruction-Pytorch:弱监督学习的精确3D人脸重建

    因此,我添加了estimate_intrinsic以获取内部参数。 例子: 这里有些例子: 原始图片 裁剪图像 渲染图像 文件架构 ├─BFM same as Deep3DFaceReconstruction ├─dataset storing the corpped images │ └...

    03开源NewSql数据库TiDB-Deep Dive into TiDB

    支持 HTTP API 获取 TiDB 参数信息 使用 Batch 方式 Resolve Lock,提升垃圾回收速度 支持多线程垃圾回收 支持 TLS 4.兼容性 支持更多 MySQL 语法 支持配置文件修改 `lower_case_table_names` 系统变量,用于...

    利用Java发送邮件(含附件)的例子

    } catch (Exception e) { System.err.println("获取邮件会话对象时发生错误!" + e); return false; } try { mimeMsg = new MimeMessage(session); // 用session对象来创建并初始化邮件对象 mp = new MimeMultipart...

    cmd操作命令和linux命令大全收集

    netstat -p 协议名 例:netstat -p tcq/ip 查看某协议使用情况 netstat -s 查看正在使用的所有协议使用情况 nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名 tracert -参数 ip(或...

Global site tag (gtag.js) - Google Analytics