GET请求和POST请求有什么区别?GET请求的参数在URL的问号后面显示,而POST参数不在URL上;POST可以比GET请求更大的数据…一般的回答都是这样。

但是作为一个高端大气上档次的程序员,这样回答就弱爆了。
为了搞清楚GET和POST的区别,下面写了一个Java程序来接收HTTP请求。
HTTP是基于TCP协议的,所以可以使用Java最底层的Socket实现。下面的程序仅仅不到10行代码,舍去了异常处理、资源关闭的代码,所以它跟真正的HTTP服务器的差距还略遥远,这里有点标题党了。当然,不要在意这些细节。
[java]  
public static void main(String[] args) throws IOException {  // 服务器监听端口号8081  ServerSocket serverSocket = new ServerSocket(8081);  // 等待接收请求,这是一个阻塞的方法,当请求到来的时候才会继续向下执行  Socket socket = serverSocket.accept();  // 获取请求内容  InputStream is = socket.getInputStream();  InputStreamReader reader = new InputStreamReader(is);  // 输出请求内容  while (true) {  System.out.print((char)reader.read());  }
}  
HTTP服务器写好了,下面是客户端。 浏览器就是HTTP客户端,不用自己去实现了,只需要写HTML就行。
[html]  
<form method="get" action="http://localhost:8081">  name:<input type="text" name="name" /><br>  age:<input type="text" name="age" /><br>  <input type="submit" />
</form>  
GET请求:
设置form的method="get",启动 Java程序,用浏览器打开HTML输入。
提交后看Java程序输出:
GET /?name=XXG&age=23 HTTP/1.1
Host: localhost:8081
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
POST请求:
设置form的method="post",启动Java程序,用浏览器打开HTML输入提交。
Java程序输出:
POST / HTTP/1.1
Host: localhost:8081
Connection: keep-alive
Content-Length: 15
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8name=XXG&age=23
两个实验可以看出,GET和POST参数所在请求数据中的位置不同,这才是GET和POST最基本的区别。
这里科普一下HTTP协议,HTTP请求一般包含三个部分:
Request-Line
Header
<空行>
Message-Body[GET请求不包含Message-Body]
其中Request-Line,就是请求的第一行,例如上面两个请求:
GET /?name=XXG&age=23 HTTP/1.1
POST / HTTP/1.1
它由三部分组成,请求Method(GET/POST/其他)、Request-URI、HTTP-Version,三个部分中间空格隔开。
Header就是传说中的请求头,键值对的形式,每一条占一行。使用不同浏览器这部分的内容也不同。
Message-Body是请求主体,POST请求参数就在这一部分,它与Header之间必须要用空行隔开,这样服务器才能分清楚Header和Body。Message-Body的长度就是Header中的Content-Length。一般GET请求中是没有这一部分的。
上面POST请求中的参数就是Message-Body:
name=XXG&age=23
所以,如果再有人问GET请求和POST请求的区别,可以回答:

GET请求的参数在URL中,在请求的第一行Request-Line中,而POST请求的参数在请求主体Message-Body中。

转载至:http://www.cnblogs.com/549294286/p/4665842.html

GET请求和POST请求有什么区别?GET请求的参数在URL的问号后面显示,而POST参数不在URL上;POST可以比GET请求更大的数据…一般的回答都是这样。 但是作为一个高端大气上档次的程序相关推荐

  1. multism中ui和uo应该怎么表示_欧阳娜娜上节目痛哭,坦言压力太大睡不着,明星都怎么了?...

    本文由明星粉丝团作者芦笙原创,未经允许不得转载 欧阳娜娜去到了<向往的生活>的节目中,在快要结束的时候,她和张子枫说希望能够再留一天,张子枫也表示为什么不留呢?当然可以啊.随后她就躺在张子 ...

  2. 你做的数据运营,90%都是无用功

    本文根据张明明老师在[deeplus直播第256期]线上分享演讲内容整理而成.(文末有回放的方式,不要错过) 张明明 <数据运营之路:掘金数据化时代>作者 美菜网 策略规划中心 负责人 1 ...

  3. pytorch微调bert_香侬读 | RoBERT: 没错,我就是能更强——更大数据规模和仔细调参下的最优BERT

    文章标题:RoBERTa: A Robustly Optimized BERT Pretraining Approach 文章作者:Yinhan Liu, Myle Ott, Naman Goyal, ...

  4. 大屏数据可视化解决方案(上)

    大屏数据可视化解决方案(上) 主推 可能是目前大屏数据可视化标准解决方案最详尽的一篇文章了,可以当做定制设计指南使用的一篇经验分享. 发布时间:2019-01-17 21:12 转载于:https:/ ...

  5. 思考long 和 double都是8个字节为什么double范围更大?

    System.out.println(Double.MAX_VALUE); System.out.println(Double.MIN_VALUE); System.out.println(Long. ...

  6. WEB中get请求和post请求的区别

    参考:https://blog.csdn.net/weixin_39361808/article/details/81136865 GET请求和POST请求是HTTP协议发送请求的两种基本方法. W3 ...

  7. 客户端(前端)Ajax中Get请求和Post请求的区别

    我们在使用Ajax时,当我们向服务器发送数据时,我们可以采用Get方式请求服务器,也可以使用Post方式请求服务器.那么,Get请求和Post请求的区别到底在哪呢?  GET请求  get是最常见的请 ...

  8. get请求和post请求的区别(简洁易懂)

    一.GET和POST是什么? HTTP协议中的两种发送请求的方法,本质上都是在进行TCP连接. 二. GET请求和POST请求的区别是什么? GET请求参数是通过URL进行传递的,POST请求的参数包 ...

  9. 接口定义,常见的接口,常见的接口请求方式,put请求和patch请求的区别

    接口定义:应用程序编程接口,指前后端数据交互的一套标准,包括软件内部之间的接口,硬件之间的接口或者是软件对外的接口. 常见的接口类型:         1,Webservice接口,主要用于服务端的接 ...

最新文章

  1. php邮箱文件发送源码,php简单实现发送带附件的邮件
  2. python绘制3d图-python中Matplotlib实现绘制3D图的示例代码
  3. Thymeleaf——使用模板动态生成JavaScript脚本文件
  4. 分布式文件系统研究-测试-文件下载测试
  5. Url重写——伪静态实现
  6. 红帽Linux 7系统修改root密码
  7. 电场在计算机专业的应用,电磁场毕业论文题目范文 数值计算和教学理论方面本科论文范文8000字...
  8. 计算机驱动空间的c盘不足怎么办,c盘空间不足
  9. OEL安装RAC 配置DNS文档
  10. 北京中国科学院计算机专业怎么样,中国科学院北京计算技术研究所计算机技术怎么样...
  11. 在物联网中应用机器学习
  12. Nature:13个维度,手把手教“研究er”如何做学术报告
  13. 使用码云同步谷歌 Chrome 浏览器书签
  14. 酯化反应固体酸催化剂
  15. 公众责任险与职业责任险的区别
  16. UE4开发PSVR游戏的常见问题
  17. 图片宽度尺寸输出为500px的PX
  18. CMMI五大成熟度定义及过程管理类详解
  19. FPGA----Verilog复数运算
  20. 十分钟时间搞懂怎么用JS代码渲染实时时间

热门文章

  1. 还在使用AtomicLong?
  2. 两端对齐的CSS怎么写?
  3. BZOJ1023:[SHOI2008]仙人掌图——题解
  4. 在硬盘留下后门,重装系统都没辙
  5. ctf密码学习题总结
  6. 在推广初期该如何运营应用
  7. Android中设置org.gradle.jvmargs
  8. 企业微信机器人脚本python_Python开发 之 企业微信机器人天天定时发消息实例
  9. HashMap之TreeNode
  10. 又一个巨头决定彻底放弃数仓!全面拥抱数据中台!