Web编程之Http简介

在Java中,一切皆对象,即使是涉及到网络编程这块,在Java中也把有关的部分,比如http协议,IO流操作封装为对象来处理。对于Web编程这块,涉及的知识点广而多,今天我们先来讲一下有关HTTP的知识。

一:HTTP

1.1:HTTP协议简介

HTTP是Web应用层协议,全称为超文本传输协议(HyperText Transfer Protocol),它是Web的核心。HTTP由两个程序实现:一个客户程序和一个服务器程序。客户程序和服务器程序运行在不同的端系统中,通过交换HTTP报文进行会话。HTTP定义了这些报文的结构以及客户和服务器进行报文交换的方式。跟HTTP相类似的协议还有SMTP(主要用于邮件传输),FTP(主要用于文件传输)等,他们都是位于OSI网络模型的顶层协议,OSI七层网络模型图可对应如下:

 

                                                                                       图1:OSI七层模型

Http定义了与服务器交互的不同方法,主要的方法有:GET,POST,PUT,DELET,HEAD,OPTIONS等。一般在浏览器中输入URL地址访问资源是采用GET方法。前面说到,客户端与服务器通过交换Http报文进行会话,那么Http报文的格式是如何的呢?

Http报文主要分为两部分,一个是客户端传送给服务器的请求报文,一个是服务器反馈给客户端的响应报文。

请求报文格式如下:

 

请求报文分为三部分:请求行,请求头部,请求正文。接下来,我们简单讲解一下这三个(注意上图格式中的空格,换行符,回车符务必要添加)。

请求行:

第一个参数为请求方法,就是上面提到的GET,POST等方法,第二个参数为请求的URL地址,第三个参数为Http版本协议,分为两种Http/1.0和Http/1.1。Http/1.0是以前的版本,现在多用Http/1.1版本。每两个参数之间用空格分开,最后一个参数回车换行。

请求头部:

请求头部是请求报文的一些附属信息。一行表示一组头域,每个头域由一个域名,冒号(:)和域值三部分组成。

常见的请求头部如下:

 

更详细的请求头部和响应头部对应信息如下:

http://tools.jb51.net/table/http_header

请求正文:

请求正文里面封装了主要的请求信息。对于不用的请求方法,请求正文位置不同。

例如GET请求是没有请求正文的,因为该数据需要封装在请求行的第二个参数URL之后,以?分割URL和传输数据,多个参数之间用&连接,例如https://www.baidu.com/s?tn=80035161_2_dg&wd=get%E8%AF%B7%E6。

如果数据是英文字母/数字,则保持原样发送

如果是空格,则转换为+

如果是中文/其他字符,则需经过加密处理,得出%E8%AF%B7%E6,其中%xx中的xx为该符号以16进制表示的ASCII。

而对于POST方法,这些数据是放在请求正文中的。

最后封装而成的整个请求报文如下:

 

这个是POST请求的报文,如果是GET的,就要把报文体中的name开始的那一串放在请求URL的后面,两部分以?加以分开。

相对于请求报文而言,响应报文的结构是高度相似的,这里不再赘述,下面给出响应报文的格式:

 

响应报文中几个要点说明:

1.状态行中的状态码表示此次请求的状态,如返回200,则表示请求成功,如返回404,则表示请求资源不存在。

2.响应正文中是我们所需的请求数据实体

 

常见的状态码及状态描述对应表可参考下面:

https://blog.csdn.net/u010412301/article/details/65069032/

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值