Get和Post的区别

            发现很多面试题都会问道Get和Post的区别,今天来了兴致,好好地研究一下。Get和Post的区别在网上可以搜到很多,首先看一下基本的定义:

 

           Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。Post比Get的安全性高。实质上,GET和POST只是发送机制不同,并不是一个取一个发!

 

      为了能看到具体的Get和Post方法,发送的数据。我们模拟一下Get和Post的过程。因为Http是基于Tcp实现的,所以我们使用底层的Socket模拟一个Http服务器。我们将获得的Get或者Post发送过来的请求消息,打印出来。

ServerSocket serverSocket=new ServerSocket(8802);
		Socket client=serverSocket.accept();
		InputStreamReader in=new InputStreamReader(client.getInputStream());
		while(true){
			System.out.print((char)in.read());
		}

 

我们写一个html模拟客户端,

get方式的:

<form method="get" action="http://10.13.30.160:8802">
	name:<input type="text" name="name" /><br>
	age:<input type="text" name="age" /><br>
	<input type="submit" />
</form>

 post方式的:

<form method="post" action="http://10.13.30.160:8802">
	name:<input type="text" name="name" /><br>
	age:<input type="text" name="age" /><br>
	<input type="submit" />
</form>

 保存为.html文件之后,分别打开。服务器会打印出具体消息:

get方式的:

GET /?name=wjy&age=24 HTTP/1.1
Host: 10.13.30.160:8802
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 BIDUBrowser/2.x Safari/537.31
Accept-Encoding: gzip,deflate
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: iso-8859-1,*,utf-8

 

post方式的:

POST / HTTP/1.1
Host: 10.13.30.160:8802
Connection: keep-alive
Content-Length: 15
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 BIDUBrowser/2.x Safari/537.31
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip,deflate
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: iso-8859-1,*,utf-8

name=wjy&age=24

 

我们通过对比可以发现:Get和Post在请求中的参数的位置不同。

HTTP请求一般包含以下部分:

 

1:Request-Line


2:Header


3:<空行>

     Message-Body[GET请求不包含Message-Body]

 

其中Request-Line包含三个部分:

Method(GET/POST/其他)、Request-URI、HTTP-Version,三个部分由空格隔开。

 

    所以可以知道,GET请求的参数在Request-Line的Request-URI中,而POST请求的参数在请求主体Message-Body中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值