zoukankan      html  css  js  c++  java
  • http请求数据的方式以及格式

    http请求报包含三个部分:

    请求行 + 请求头 + 数据体

    请求行包含三个内容 method + request-URI + http-version 如 GET /icwork/? Search = product HTTP/1.1

    method 包含有 post , get, head,delete, put, connect, options, patch, propfind, propatch, mkcol, copy, move, lock, unlock, trace, head

    方法:

    get 

    通过请求URI获得资源
    post  用于添加新的资源,用于表单提交

    put 

    用于修改某个内容
    delete  删除某个内容
    connect  用于代理进行传输例如SSL
    options  询问可以执行那些方法
    patch  部分文档更该
    propfind  查看属性
    proppatch  设置属性
    mkcol  创建集合
    copy  拷贝
    move  移动
    lock  加锁
    unlock  解锁
    trace  用于远程诊断服务器
    head  类似于get,用于检查对象是否存在用于得到元数据

    请求头

    请求头包含:

    Accept:指浏览器或其他客户可以接爱的MIME文件格式。Servlet可以根据它判断并返回适当的文件格式。

    User-Agent:是客户浏览器名称

    Host:对应网址URL中的Web名称和端口号。

    Accept-Langeuage:指出浏览器可以接受的语言种类,如en或en-us,指英语。

    connection:用来告诉服务器是否可以维持固定的HTTP连接。http是无连接的,HTTP/1.1使用Keep-Alive为默认值,这样,当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都建立连接

    Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能。

    Referer:表明产生请求的网页URL。如比从网页/icconcept/index.jsp中点击一个链接到网页/icwork/search,在向服务器发送的GET/icwork/search中的请求中,Referer是http://hostname:8080/icconcept/index.jsp。这个属性可以用来跟踪Web请求是从什么网站来的。

    User-Agent:是客户浏览器名称。

    Content-Type:用来表名request的内容类型。可以用HttpServletRequest的getContentType()方法取得。

    Accept-Charset:指出浏览器可以接受的字符编码。英文浏览器的默认值是ISO-8859-1.

    Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到Web响应之后先解码,然后再检查文件格式。

    getf方法请求头例如:

    复制代码
    Accept:image/webp,image/*,*/*;q=0.8  
    指浏览器或其他客户可以接爱的MIME文件格式。Servlet可以根据它判断并返回适当的文件格式。 Accept-Encoding:gzip, deflate, sdch, br
    指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到Web响应之后先解码,然后再检查文件格式。 Accept-Language:en-US,en;q=0.8
    指出浏览器可以接受的语言种类,如en或en-us,指英语。 Connection:keep-alive
    用来告诉服务器是否可以维持固定的HTTP连接。http是无连接的,HTTP/1.1使用Keep-Alive为默认值,
    这样,当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都建立连接 Cookie:PSTM=1466499789; BAIDUID=D3A617EE01FFA9DB9B7E3E5F0D3A01EE:FG=1; BIDUPSID=4AA34EC11075CB66B8BC9792DD422B6F; BDUSS=VCc1M0cVQtYnFGfmxTUW5kVTUydnBZUmhiWFRXbnRlMnpIdWV2ODVxNHZ1WkZYQVFBQUFBJCQAAAAAAAAAAAEAAADkEA1ZtPO3rMfRt6zH0cfRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8salcvLGpXdz; BD_HOME=1; BD_UPN=123353; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; BD_CK_SAM=1; H_PS_PSSID=19292_18286_1458_20318_18241_20369_17942_20388_19690_20417_18560_17001_15560_12277_20253; BDSVRTM=0 Host:www.baidu.com Referer:https://www.baidu.com/s?wd=http%20%E8%AF%B7%E6%B1%82%E6%95%B0%E6%8D%AE%E7%9A%84%E6%95%B0%E6%8D%AE%E5%8C%85%E6%A0%BC%E5%BC%8F&rsv_spt=1&rsv_iqid=0x9b746a8000022af9&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=1&oq=http%20%E8%AF%B7%E6%B1%82%E6%96%B9%E5%BC%8Fpost%20url%E6%A0%BC%E5%BC%8F&rsv_t=59fb7cEn5xgK8JFpqQ7F7coy6k6dn5sGpEMj1cDM4oMoy0TGArJ2l3fxOqy6F9lXoqoi&inputT=7936&rsv_pq=ca5859d100027005&rsv_sug3=73&rsv_sug1=12&rsv_sug7=100&rsv_sug2=0&rsv_sug4=32020 User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36
    复制代码

    post方法的请求头

    复制代码
    Accept:*/*
    Accept-Encoding:gzip, deflate, br
    Accept-Language:en-US,en;q=0.8
    Authorization:Basic WkEtMTE0MjcyNjAyMDY=
    Connection:keep-alive
    Content-Length:666
    Content-Type:application/json
    Host:zhihu-web-analytics.zhihu.com
    Origin:http://www.zhihu.com
    Referer:http://www.zhihu.com/question/41690822
    User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36
    Request Payload
    view source
    复制代码

    相比之下多了content-Type 和 Content-Length

    Content-Type:表示的是请求报文体的 MIME 类型  ,注:GET的请求消息体是空的 所以不需要指定消息体的MIME类型

    Content-Length:表示的是 post的数据的长度 

    例如请求数据:

    复制代码
    1 GET/sample.jspHTTP/1.1
    2 Accept:image/gif.image/jpeg,*/*
    3 Accept-Language:zh-cn
    4 Connection:Keep-Alive
    5 Host:localhost
    6 User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
    7 Accept-Encoding:gzip,deflate
    8  
    9 username=jinqiao&password=1234
    复制代码

    第一行为http请求行,包含方法,URI 和http版本

    1-7为请求头,包含浏览器,主机,接受的编码方式和压缩方式

    第8行表示一个空行 表示请求头结束 这个空行是必须的

    第9行是数据体,比如是需要查询的信息。

    http响应体由三部分组成:

    http响应由三个部分组成分别是状态行,响应头,响应正文。

    状态行是由:HTTP-Version+Status-Code+Reason-Phrase
    比如:HTTP/1.1 200 ok
    分别表示http版本 + 状态码 + 状态代码的文本描述
    状态码:


    1xx 指示信息–表示请求已接收,继续处理
    2xx 成功–表示请求已被成功接收、理解、接受
    3xx 重定向–要完成请求必须进行更进一步的操作。
    4xx 客户端错误–请求有语法错误或请求无法实现。
    5xx 服务器端错误–服务器未能实现合法的请求。
    响应头:包含服务器类型,日期,长度,内容类型等
    Server:Apache Tomcat/5.0.12
    Date:Mon,6Oct2003 13:13:33 GMT
    Content-Type:text/html
    Last-Moified:Mon,6 Oct 2003 13:23:42 GMT
    Content-Length:112

     响应正文响应正文就是服务器返回的HTML页面

  • 相关阅读:
    Git 获取远程分支
    entOS查看系统信息-CentOS查看命令
    CentOS6.5下用yum安装 git
    CENTOS如何禁用ROOT本地或远程SSH登录
    ProtoBuf练习(二)
    ProtoBuf练习(一)
    ProtoBuf练习
    Protocol Buffers官方文档(开发指南)
    Protocol Buffers官方文档(proto3语言指南)
    Boost Python学习笔记(五)
  • 原文地址:https://www.cnblogs.com/lnn123/p/9938743.html
Copyright © 2011-2022 走看看