springbootboot-HttpServletRequest.getInputStream() 获取post内容

问题描述:

在php端用curl post一段json到java springboot。在java端用request.getInputStream()获取到的数据为空。

问题确认:

询问度娘后, 她告诉我:

根据Servlet规范,如果同时满足下列条件,则请求体(Entity)中的表单数据,将被填充到request的parameter集合中(request.getParameter系列方法可以读取相关数据):
1 这是一个HTTP/HTTPS请求
2 请求方法是POST(querystring无论是否POST都将被设置到parameter中)
3 请求的类型(Content-Type头)是application/x-www-form-urlencoded
4 Servlet调用了getParameter系列方法

from:http://bbs.csdn.net/topics/390833946

抓包发现,php发送的post请求符合 以上规范。 好吧, 就是因为这样, 导致request.getInputStream()获取不到数据,因为getInputStream()流中的数据被读被框架放到 request 的paramter相关变量中去了, 并且一旦放置成功,getInputStream()流中的数据将被清空。(猜测: 其实是流读取到最后, 没有被重置。吐槽spring/java: .net中至少流是可以设置读取 指针指向0, 则可以重新读取流了好吧。)

解决办法:

在读取post参数时, 如果getInputStream()读取为空,则从getParameterMap()中读取。(再次吐槽: 参数居然是key, 不是value???)

思考:

我真的好想你, .net

时间: 2024-10-12 01:40:06

springbootboot-HttpServletRequest.getInputStream() 获取post内容的相关文章

java通过URL获取文本内容

原文地址https://www.cnblogs.com/myadmin/p/7634262.html public static String readFileByUrl(String urlStr) { String res=null; try { URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); //设置超时间为3秒 conn.setConnectTimeo

iOS 【野路子】获取WKWebView内容高度做H5原生连接

前言:是这样的,刚写完上一篇文章还没缓过神来,上一篇文章我还提到了,想和大家聊聊原生+H5如何无缝连接的故事.结果我朋友就给我发了两篇他的作品.他的做法也都有独到之处.好的文章都是这样,让你每次看都能有新的收获,我们也都致力于写一些能帮别人解决问题的文章,下面我用另一种方式来完美实现这个问题.毕竟之前大家都是根据UIWebView写的,我来说说换成WK之后的区别,主题思路也不同哦~ 插两个链接,是我朋友的大家也可以做个对比 iOS [终极方案]精准获取webView内容高度,自适应高度 iOS

从html字符串中获取div内容---jquery

思考的问题: 怎么在一个网页的div中嵌套另外的网页(不使用inclue,iframe和frame,不使用他们的原因,include只能嵌套静态网页,iframe对网络爬虫影响,frame嵌套网页无法获取父级页面信息,不够灵活) 如果不想嵌套整个网页怎么办?(只是嵌套另外页面的部分内容) 回答(想法): 使用jquery的ajax函数或者load函数可以获取网页内容,从而实现嵌套网页(获取到的网页内容是html字符串) 怎么从字符串中获取部分内容? 实践1: index.html页面(在这个页面

获取mysql内容,生成xml文件,并且以webservice形式发送

<xyt> <news id> <url></url> <title></title> </news> </xyt> 其实是三个知识点综合到一起的,包括如何访问mysql,如何生成xml文件,如何使用进行webservice开发 好了,话不多说,直接粘代码 package com.service; import java.io.FileOutputStream; import java.io.IOExcepti

iOS 【终极方案】精准获取webView内容高度,自适应高度

前言:是这样的,刚写完上一篇文章还没缓过神来,上一篇文章我还提到了,想和大家聊聊原生+H5如何无缝连接的故事.结果我朋友就给我发了两篇他的作品.他的做法也都有独到之处.好的文章都是这样,让你每次看都能有新的收获,我们也都致力于写一些能帮别人解决问题的文章,下面我用另一种方式来完美实现这个问题.毕竟之前大家都是根据UIWebView写的,我来说说换成WK之后的区别,主题思路也不同哦~ 插两个链接,是我朋友的大家也可以做个对比 iOS [终极方案]精准获取webView内容高度,自适应高度 iOS

PHP ftp获取目录内容为空

使用PHP的ftp函数获取目录内容,ftp_nlist()和ftp_rawlist()返回都为空. 查了一圈资料找不到答案,然后用Python写了一个,一样的操作就可以获取目录内容. 抓包发现,Python在获取目录内容之前自动改变为被动模式了,在PHP中ftp_rawlist()前也手动ftp_pasv($con, TRUE),就能获取到内容了. 总结:也许是对ftp协议不理解,导致了这样的问题,在此写下,防止各位再踩坑^_^

PHP curl获取页面内容,不直接输出到页面,CURLOPT_RETURNTRANSFER参数设置

使用PHP curl获取页面内容或提交数据,有时候希望返回的内容作为变量储存,而不是直接输出.这个时候就必需设置curl的CURLOPT_RETURNTRANSFER选项为1或true. 1.curl获取页面内容, 直接输出例子: <?php $url = 'http://52php.cnblogs.com'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPE

Swift - 文本输入框内容改变时响应,并获取最新内容

1,问题描述 有时我们开发的时候需要先把“确认”按钮初始设置为不可用,当文本框中输入文字以后,再将输入按钮变为可用. 2,实现原理 (1)要检测文本框内容的变化,我们需要让新界面的Controller遵循一个文本协议UITextFieldDelegate. 同时在viewDidLoad方法内将文本框的代理设置为MainListController当前实例. 然后实现textFile的shouldChangeCharactersInRange方法就能在文本框将要变化的时候执行一些代码. (2)但这

appium如何获取conten-desc内容文本

如何获取conten-desc内容文本 定位到该元素,通过getAttribute("name");来获取内容如:媒体报道 总结: 思路和selenium一样,可以理解为获取它的value值,只不过是括号写的name