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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 什么是C语言数组地址

    什么是C语言数组地址还记得以前有和同事聊过C语言数组这个概念,那时候大家都还不是掌握的很好,总会搞错数组的地址。但是总有人会对数组的地址这个概念产生怨念,他们认为一个数组a本身就是地址,殊不知数组名a只是其首元素的地址,而&a才是数组a的地址。拓展:假设有一个数据inta[5];那么,a代表的是a[0]的地址,换句话说,a等价于&a[0],假如这个地址值是0x123,那么a+1的值是0…

    2022年7月22日
    13
  • Log4j2 Demos(基础/时间&大小回滚/定期删除/日志脱敏)「建议收藏」

    Log4j2 Demos(基础/时间&大小回滚/定期删除/日志脱敏)「建议收藏」前言本章主要介绍Log4j2的几个例子与使用场景。Log4j2DemosLog4j2Demos(普通设置)&amp;amp;lt;?xmlversion=&amp;quot;1.0&amp;quot;encoding=&amp;quot;UTF-8&amp;quot;?&amp;amp;gt;&amp;amp;lt;Configurationstatus=&amp;quot;debug&amp;quo

    2022年5月7日
    59
  • nfc怎么复制门禁卡,有什么操作教程吗「建议收藏」

    nfc怎么复制门禁卡,有什么操作教程吗「建议收藏」现在居住小区很多都有门禁,也是为了提升一个更安全的居住环境,在忙碌的生活中,人们有时会忘记带手机、钥匙、门禁卡等,像忘记门禁卡,会导致进不了小区,这时候该怎么办呢,接下来由换换回收小编分享nfc怎么复制门禁卡的操作教程。nfc是一些安卓手机上才有的功能它不仅能充值公交卡还可以充当门禁卡使用,方法很简单支持NFC的手机基本都可以门禁卡,但是需要相关APP的适配才可以,比如华为小米都有相关模拟门禁的APP,小米钱包有模拟门禁卡功能,前提是手机自带nfc射频芯片,但是目前为了安全起见,使用该功能…

    2022年5月3日
    168
  • 如何成为一名优秀的工程师(语义篇)

    如何成为一名优秀的工程师(语义篇)

    2021年11月6日
    32
  • IDEA快捷键大全 + 动图演示,提升效率[通俗易懂]

    IDEA快捷键大全 + 动图演示,提升效率[通俗易懂]大佬的总结,引用,备忘IntelliJIDEA快捷键大全+动图演示_水滴技术的博客-CSDN博客

    2022年9月27日
    3
  • php字符串大小写转换函数

    php字符串大小写转换函数php字符串大小写转换函数

    2022年4月24日
    44

发表回复

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

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