用request作post请求,需要有key值重复的form表单怎么做
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用request作post请求,需要有key值重复的form表单怎么做相关的知识,希望对你有一定的参考价值。
参考技术A 关于django的POST常见方法 1.用post方法去取form表单的值在取值前,先得判断是否存在这个key if not ...即如何以post形式向server发送ajax请求,在发送请求之前,第一个我们需要解决的问题就是...本回答被提问者和网友采纳HTTP原始文本POST请求[重复]
【中文标题】HTTP原始文本POST请求[重复]【英文标题】:HTTP raw text POST request [duplicate] 【发布时间】:2018-03-11 00:05:54 【问题描述】:我需要计算原始 HTTP 发布请求的哈希值,并将其与 Java 中相同标头中的签名哈希值进行比较。问题是,我尝试了多种方法,但无法提取发送的确切 POST 请求。附上请求:
我需要完全相同的字符串(以及所有 % 和其他符号),因为即使是单个空格差异也会生成不正确的哈希。我们可以在这里使用自定义过滤器吗,如果可以,那么究竟如何?
【问题讨论】:
请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。 【参考方案1】:您使用的是 servlet 还是 jersey?在 servlet 中,您可以获取请求的原始流并转换为字符串。 HttpServletRequest#getInputStream()
或 getReader。
例如
InputStream body = request.getInputStream();
// ..
编辑:添加我拥有的代码,这是可行的。
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
InputStream is = request.getInputStream();
//this convertStreamToString is my internal method. You can have any your own conversion API
System.out.println("----"+convertStreamToString(is));
processRequest(request, response);
【讨论】:
警告:当您这样做时,您可能无法再使用getParameter()
,因此您也必须自己处理内容。正如getParameter()
的javadoc 所说:如果参数数据是在请求正文中发送的,例如发生在HTTP POST 请求中,那么直接通过getInputStream()
或getReader()
读取正文可能会干扰执行这个方法。
这是一个很好的观点。谢谢@Andreas。可以先获取 getParameters() 然后调用流/阅读器吗?我需要恢复到 API。
我认为问题在于,如果内容是流式传输的(客户端决定),那么内容只能处理一次。 getInputStream()
、getReader()
和 getParameter()
(以及它的表亲)都使用内容。我认为,如果内容是完整发送的,即没有流式传输,它们都会起作用,因此 javadoc 中的“可以干扰”。流式传输是指内容被分块,即content-length
标头未给出。
getReader() 和 getInputStream() 没有帮助。他们返回空值。但是,我在 getParamterMap() 中获取值,但 htis 返回一个 map以上是关于用request作post请求,需要有key值重复的form表单怎么做的主要内容,如果未能解决你的问题,请参考以下文章
HTTP请求中的form data和request payload的区别
Cypress web自动化31-request发post请求登录接口