我试图在java中从POST读取数据。 我在registrationForm.html中有表格:
<form action="registratrationResult.html" method="post">
Mail:<br>
<input type="text" name="mail">
<br>
Password:<br>
<input type="password" name="password">
<input type="submit">
</form>
我想在不使用servlet的情况下在java中阅读此内容。我从浏览器中读到了所有内容,我得到了它:
>POST /registratrationResult.html HTTP/1.1
>Host: localhost:8080
>Connection: keep-alive
>Content-Length: 29
>Cache-Control: max-age=0
>Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
>Origin: http://localhost:8080
>Upgrade-Insecure-Requests: 1
>User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
>Content-Type: application/x-www-form-urlencoded
>Referer: http://localhost:8080/registrationForm.html
>Accept-Encoding: gzip, deflate
>Accept-Language: pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4
我读到应该有类似的东西:
parameter=value&also=another
如何获得它? 当我更改输入数据时,Content-Length正在改变。
答案 0 :(得分:0)
正如你所说,实际的POST数据存储为键值对,但它们被放在请求体中而不是标题中。
使用cURL的示例:
$ curl --data "fname=stackoverflow&lname=user" --trace - http://www.w3schools.com/tags/demo_form_method_post.asp
请注意输出中的发送数据区域:
=> Send data, 30 bytes (0x1e)
0000: 66 6e 61 6d 65 3d 73 74 61 63 6b 6f 76 65 72 66 fname=stackoverf
0010: 6c 6f 77 26 6c 6e 61 6d 65 3d 75 73 65 72 low&lname=user
== Info: upload completely sent off: 30 out of 30 bytes
发布请求通常会以内容类型application/x-www-form-urlencoded
发送,如发送标头中所述。