Form表单请求

Form表单请求Form 表单请求

Form表单请求,一般常用的是Get和Post提交方式,

Get方式提交

表单内容

<form action="user/login.do" method="get" > 用户名:<input type="text" name="username"><br> 密码:<input type="text" name="password"><br> <input type="submit" value="登录"/> </form>

Get方式提交,最后以 http://localhost:8080/springmvc/user/login.do?username=zhangsan&password= 请求服务器。

Post方式提交

Post提交方式,Form表单有两种enctype类型:

1、enctype=”application/x-www-form-urlencoded”

也是默认的提交类型,一般针对文本请求参数,不含附件。比如

<form action="user/login.do" method="post" > 用户名:<input type="text" name="username"><br> 密码:<input type="text" name="password"><br> <input type="submit" value="登录"/> </form>

提交表单时的Http请求如下:

POST http://localhost:8080/springmvc/user/login.do HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 33
Cache-Control: max-age=0
Origin: http://localhost:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://localhost:8080/springmvc/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8

username=zhangsan&password=123456

消息头中的

消息体中内容以key=value的形式拼接

2、enctype=”multipart/form-data”

需要上传附件时,必须为”multipart/form-data”。,比如

<form action="user/login.do" method="post" enctype="multipart/form-data"> 用户名:<input type="text" name="username"><br> 密码:<input type="text" name="password"><br> 上传文件:<input type="file" name="uploadFile"/><br> <input type="submit" value="登录"/> </form>

提交表单时,Http请求协议如下:

POST http://localhost:8080/springmvc/user/login.do HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 400
Cache-Control: max-age=0
Origin: http://localhost:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarykALcKBgBaI9xA79y
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://localhost:8080/springmvc/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8

------WebKitFormBoundarykALcKBgBaI9xA79y
Content-Disposition: form-data; name="username"

zhangsan
------WebKitFormBoundarykALcKBgBaI9xA79y
Content-Disposition: form-data; name="password"

123456
------WebKitFormBoundarykALcKBgBaI9xA79y
Content-Disposition: form-data; name="uploadFile"; filename="file.txt"
Content-Type: text/plain

文件中的内容     
------WebKitFormBoundarykALcKBgBaI9xA79y--

请求消息头中, Content-Type: multipart/form-data; boundary=—-WebKitFormBoundarykALcKBgBaI9xA79y

boundary为分隔符.

消息体中的每个参数都会以“–”+boundary  隔开,最后一个分隔符末尾需要加”–“,即”–“+boundary+”–“

模拟Form表单请求

在了解了表单请求时组装的Http协议后,我们就按照http协议,模拟出表单请求了。比如使用HttpUrlConnection上传文件,当然很多Http框架已经帮我们实现了文件上传,比如

Okhttp、HttpClient等。

如何使用HttpUrlConnection实现文件上传,可以参考我的另一篇文章如何使用 HttpURLConnection上传文件






版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231416.html原文链接:https://javaforall.net

(0)
上一篇 2025年12月14日 下午4:01
下一篇 2025年12月14日 下午4:22


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号