Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 307|回复: 0

[网络编程学习]Java网络编程从入门到精通(21)HTTP消息的格式

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-11-4 00:02:28 | 显示全部楼层 |阅读模式
    当用户在浏览器中输入一个基于HTTP协议的URL时(以http://开头的URL),就相当于通知器按着这个URL组织生成一个HTTP请求,并将这个请求发送到服务器;同时,等待服务器的响应。无论是请求还是响应,都统称为HTTP消息。  
       
        HTTP
        协议分为两部分:
       
       
        1. HTTP
        请求 消息。
       
       
        2. HTTP
        响应 消息。
       
       
        一、
        HTTP
        请求消息
       
       
        HTTP
        请求消息分为请求消息头以及请求实体内容两部分。请求消息头的第一行必须由以下三部分组成:
       
       
         
        请求的 方法(GET、POST和HEAD等)。
       
       
         Web
        资 源的路径(http://www.website.com/test/test.HTML中的/test/test.html
       
       
        部分)。
       
       
        HTTP
        协议的版本 (HTTP/1.0或HTTP/1.1)。
       
       
        在请求消息头的其他 行是请求头字段。每一行的格式是:
       
       
        "
        头字段" ":" "头字段的值"
       
       
        请求头以一个空行结 束。如下面上一个GET请求的例子:
       
      
       
       
         
       

         
       
      
       


      

      
      
       
      GET / HTTP/
      1.1
      
    Host: www.csdn.net
    Connection: Keep-Alive
    Accept: */*

      
      

      如果是POST请求,将要提交的实体内容放到消息头的空行后面,如下面是一个POST请求的例子:

      
      
       
      POST /Servlets-examples/servlet/RequestParamExample HTTP/
      1.1
      
    Host: localhost:
      8888
      
    Content-Length:
      29
      
    Connection: Close

    firstname
      =
      Bill&lastname
      =
      Gates

      
      

      在上面的请求消息中 Content-Length表示请求内容的以字节为单位的长度(" firstname=Bill&lastname=Gates"的长度)。在使用POST方法时,这个字段必须提供,而且长度必须等于实体内容的 长度,否则服务器将返回一个错误状态码。
      

      二、
      HTTP
      响应消息
      

      HTTP
      响应消息同样也分为消息头和实体内容两部分。HTTP的响应消息头和请求消息头类似;第一行是请求 的结果,也就是说,在响应消息头的第一行表明了请求消息是否成功地获得了服务器上的Web资源。第一行必须由以下三部分组成:
      

      1.      
      响应 消息的HTTP版本。
      

      格式为 HTTP/1.1或HTTP/1.0。这个版本号未必和请求消息头的版本号一致;这主要是
      

      因为,服务器未必支持HTTP请求中所描述的HTTP版本,如使用GET / HTTP/1.1去请求服务器,当服务器只支持HTTP1.0时,那么就会返回HTTP/1.0。
      

      2.      
      状态码。
      

      这个状态码由三位的 数字组成,分为五个档次。下面是HTTP1.1的响应码:
      

      (1) 以1开头的数字(1xx)。
      

       
      临时请求状态码。由100和101组成。这类状态码并不经常使用,它们的作为主要是服务器为客户端 返回的临时的状态。
      

      (2) 以2开头的数字(2xx)。
      

       
      请求成功状态码。范围从200到206。其中最常用的是200,它表示客户端请求成功,服务器已经 将所请求的Web资源返回到了客户端。其他的六个状态码类似,都表示请求成功,只是要指引客户端进和下一步的动作。如状态码206表示服务器只是返回了一 部分请求资源,客户端要想获得全部的Web资源,必须继续发出HTTP请求。其他的响应码的含义可以参阅HTTP1.1的规范RFC2616。
      

      (3) 以3开头的数字(3xx)。
      

       Web
      资源重定向状态码。范围从300到307。所有以3开头的状态码都以不同的原因和方式使Web资源 改变了原来的URL。如302通过一个Location字段确定了Web资源改变URL后的位置。有了这种状态码,当某个网站或其他的Web资源的URL 变化后,而访问这些Web资源的用户并不能即使知道变化后的URL;因此,可以在用户访问原来的URL时加一个302响应,使客户端自动去访问新的 URL。
      

      (4) 以4开头的数字(4xx)。
      

       
      客户端错误状态码。范围从400到417。也许没人希望看到这状态码。但它们确实在 Internet上大量存在。当用户访问的Web资源不存在或是没有权限访问Web资源时,服务器将返回这类状态码。这类状态码中最常遇到的是400。当 用户发送一个不存在的Web资源路径时(GET、POST和HEAD方法后面跟的路径),服务器就会返回这个状态码。
      

      (5) 以5开头的数字(5xx)。
      

      服务器错误状 态码。范围从500到505。这类状态码也是一类错误状态码,只是它和4xx不同的是,5xx的错误是由于服务器的原因而产生的;如用户向服务器发送一个 HTTP协议不支持的方法,如GET1,服务器将返回501错误,表示服务器不支持这个HTTP请求方法。
      

      3.     
      状态 信息。
      

      响应信息的内容和状 态码息息相关。如状态码为200,则状态信息为"OK"。状态码为501,状态信息为"Not Implemented"。要想详细了解每一个状态码所对应的状态信息,请参阅HTTP1.1的规范RFC2616。
      

      HTTP
      响应消息的其他部分和请求消息一样,也是由很多响应头字段组成,每个字段和字段值占一行。响应消息 头使用一个空行结束,空行的后面跟着HTTP响应消息的实体内容。如下面是一个完整的HTTP请求和响应的例子:

      

      HTTP
      请求消息
      
      
       
      GET / HTTP/
      1.1
      
    Host:www.csdn.net


      

      HTTP
      响应消息
      


      
       
      HTTP/
      1.0
       
      200
       OK
    Content-Length:
      132273
      
    Content-Type: text/html
    Content-Location: http://www.csdn.net/index.htm
    Last-Modified: Sun
      ,
       
      28
       Jan
      2007
       
      09
      :
      20
      :
      00
       GMT
    Accept-Ranges: bytes
    ETag:
      "
      eed72b7cbd42c71:1b0e
      "
      
    Server: Microsoft-IIS/
      6.0
      
    X-Powered-By: ASP.NET
    Date: Sun
      ,
       
      28
       Jan
      2007
       
      09
      :
      23
      :
      26
       GMT
    Age:
      32
      
    X-Cache: HIT from cachebj244.csdn.net
    Connection: close
    <!DOCTYPE html ...

    ......

      
      

      从上面的HTTP消 息可以看出,请求和响应消息中的HTTP版本并不一样,这说明CSDN的Web服务器为了和只支持HTTP1.0的客户端兼容,也采用了HTTP1.0协 议。

    注意:
      在HTTP请求和响应消息中的第一行的请求方法(GET、POST等)以及HTTP/1.1或 HTTP1.0中的字母必须大写,请求方法后面的路径大小写都可。消息头字段对大小写不敏感,但大多数的请求和响应字段名都采取了首字母大写的方式。

      
    请务必保留此出处http://androidguy.blog.51cto.com/974126/214420



      
      
       
       

         
       

         
       
      
    复制代码
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 13:11 , Processed in 0.377057 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表