`
wawa129
  • 浏览: 320829 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HTTP报文格式(转)

 
阅读更多

HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。

请求报文

一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。

 

 (1)请求行

请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。

HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。这里介绍最常用的GET方法和POST方法。

GET:当客户端要从服务器中读取文档时,使用GET方法。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号(“?”)代表URL的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。

POST:当客户端给服务器提供信息较多时可以使用POST方法。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据。

(2)请求头部

请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:

User-Agent:产生请求的浏览器类型。

Accept:客户端可识别的内容类型列表。

Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。

(3)空行

最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。

(4)请求数据

请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。

 

POST请求时,我读取完/r/n后,再读取一行,发现没有可以读取的内容了,那么请求数据应该怎样读取呢?

 

2010.07.20

终于弄清楚了为什么按照上面的方法读取不了请求数据,而且还跳转不到指定的地方,这是因为请求数据并不是按行存取的,即不以'/n'结束,所以因为读取不了/n而进入了死循环状态。

 只要将缓冲区的剩余部分,用printf打印出来即可。

分享到:
评论

相关推荐

    基于报文类型的WSP协议和HTTP协议转换研究

    硕士论文,可以用CAJ软件打开。希望能够对大家有用。

    串口数据转换成http协议数据发送到云端

    实时监控串口,将从串口读取到的数据通过http发送到云端,同时http数据报文格式可以自定义,同时命令行支持灵活配置 串口参数。源码支持跨平台

    scan_task.rar_gzip_vb6 HTTP报文_vb6 gzip

    vb6程序集,含数据库转电子表格、打印监控、HTTP数据报监控等内容。其中HTTP数据报文实现了gzip格式解压和utf-8字符解码。

    TCPIP详解卷[1].part06

    14.3 DNS的报文格式 144 14.3.1 DNS查询报文中的问题部分 146 14.3.2 DNS响应报文中的资源记录部分 147 14.4 一个简单的例子 147 14.5 指针查询 150 14.5.1 举例 151 14.5.2 主机名检查 151 14.6 资源记录 152 14.7 ...

    C语言实现的支持高并发、超高性能Web服务器源码.rar

    连接数算法),支持HTTP与HTTPS互转 * 支持rewrite * 支持优雅重启/重载配置,重启期间完全不中断对外服务 * 支持工作进程绑定CPU * 支持进程 崩溃后自动重启安全机制: * HTTP请求报文合法性校验 * 活跃超时控制...

    TCP-IP详解.卷三:TCP事务协议,HTTP,NNTP和UNIX域协议

    14.3 DNS的报文格式 144 14.3.1 DNS查询报文中的问题部分 146 14.3.2 DNS响应报文中的资源记录部分 147 14.4 一个简单的例子 147 14.5 指针查询 150 14.5.1 举例 151 14.5.2 主机名检查 151 14.6 资源记录 152 14.7 ...

    计算机网络复习题

    报文交换:整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下 一个结点。 优点:无需预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率; 缺点:时延较长,灵活性较差。 分组交换:单个...

    中文版RFC,共456

    RFC2463 针对因特网协议第六版(Ipv6)的因特网控制报文协议(ICMPv6)规范 RFC2466 IP 版本6 管理信息基础:ICMPv6组 RFC2471 IPv6检测地址分配 RFC2474 IPv4与IPv6包头中差分服务字段(DS Field)的定义 RFC2475 分类...

    RFC中文文档-txt

    RFC2463 针对因特网协议第六版(Ipv6)的因特网控制报文协议(ICMPv6)规范 RFC2466 IP 版本6 管理信息基础:ICMPv6组 RFC2471 IPv6检测地址分配 RFC2474 IPv4与IPv6包头中差分服务字段(DS Field)的定义 RFC2475 分类...

    Http1.1超文本传输协议中文版

    3.3 日期/时间格式(Date/Time Formats) 20 3.3.1完整日期 (Full Date) 20 3.3.2 Delta Seconds 22 3.4 字符集 22 3.4.1丢失的字符集(Missing Charset) 22 3.5 内容编码(Content Codings) 23 3.6 传输编码 ...

    TCP/IP详解 卷1:协议--源代码

    14.3 DNS的报文格式 144 14.3.1 DNS查询报文中的问题部分 146 14.3.2 DNS响应报文中的资源记录部分 147 14.4 一个简单的例子 147 14.5 指针查询 150 14.5.1 举例 151 14.5.2 主机名检查 151 14.6 ...

    rfc中文文档目录,包含部分翻译

    RFC文档目录 RFC1 主机软件 RFC2 主机软件 RFC3 文档规范 RFC4 网络时间表 RFC6 与 Bob Kahn 会话 RFC10 文档规范 ...RFC2463 针对因特网协议第六版(Ipv6)的因特网控制报文协议(ICMPv6)规范 ...

    TCPIP详解--共三卷

    14.3 DNS的报文格式 144 14.3.1 DNS查询报文中的问题部分 146 14.3.2 DNS响应报文中的资源记录部分 147 14.4 一个简单的例子 147 14.5 指针查询 150 14.5.1 举例 151 14.5.2 主机名检查 151 14.6 资源记录 152 14.7 ...

    java jdk实列宝典 光盘源代码

    UDP编程,包括收发udp报文; 聊天室服务器端,Chatserver.java;聊天室客户端,ChatClient.java; Ftp客户端,Mainframe.java; 14数据库 连接各种数据库DBconnector.java; 获得数据库和表的元数据Getmetadata....

    go开发实战.doc

    结合视频效果更好 ... 1. 初识Go语言 1 1.1 Go语言介绍 1 1.1.1 Go语言是什么 1 1.1.2 Go语言优势 1 ...1.1.3 Go适合用来做什么 2 ...2.5 fmt包的格式化输出输入 13 ...12.3.2 HTTP报文浅析 128 12.3.3 HTTP编程 134

    Visual C++网络通信编程实用案例精选_3

    233 6.3 POP3协议 259 6.3.1 POP3会话 259 6.3.2 POP3信件 264 6.3.3 POP3客户端实例方法 268 6.3.4 POP3客户端实例实现 268 6.4 ICMP协议 287 6.4.1 ICMP报文格式 287 6.4.2...

    Visual C++网络通信编程实用案例精选_7

    233 6.3 POP3协议 259 6.3.1 POP3会话 259 6.3.2 POP3信件 264 6.3.3 POP3客户端实例方法 268 6.3.4 POP3客户端实例实现 268 6.4 ICMP协议 287 6.4.1 ICMP报文格式 287 6.4.2...

    Visual C++网络通信编程实用案例精选_9(全)

    233 6.3 POP3协议 259 6.3.1 POP3会话 259 6.3.2 POP3信件 264 6.3.3 POP3客户端实例方法 268 6.3.4 POP3客户端实例实现 268 6.4 ICMP协议 287 6.4.1 ICMP报文格式 287 6.4.2...

    Visual C++网络通信编程实用案例精选_6

    233 6.3 POP3协议 259 6.3.1 POP3会话 259 6.3.2 POP3信件 264 6.3.3 POP3客户端实例方法 268 6.3.4 POP3客户端实例实现 268 6.4 ICMP协议 287 6.4.1 ICMP报文格式 287 6.4.2...

Global site tag (gtag.js) - Google Analytics