Objective-C的网络请求相关——Http超文本传输协议学

2023-02-13  本文已影响0人  寻心_0a46

�Http协议 - 超文本传输协议

Http协议是应用层协议,底层要求的传输协议必须是可靠的传输协议,通常是TCP协议。

Http协议规定客户端与服务端之间的通讯方式为一次请求一次响应,即客户端发起链接,并向服务端发送一个标准的Http请求,而后服务端处理该请求后给予一个标准的Http响应,所以对于Http协议而言,服务端永远不会主动响应客户端。

Http协议现在常用的是Http1.1版本协议在Http1.0版本时,要求一次会话只能完成一次请求与响应。即客户端与服务端建立TCP链接后,发送一次请求,当服务端给予响应后立即断开链接。在Http1.1版本中,一个较大的改动就是在一次会话中可以完成多次请求与响应

Http协议中规定的请求与响应的内容大部分是文本数据,但是这些字符只能是ISO88590-1编码中出现的字符,这意味着在Http协议中是不能直接出现中文等字符的。

Http中的请求定义Request,一个请求通常包含三部分:请求行,消息头,消息正文

请求行的格式为: Method(请求方式) URL(请求的资源路径) Protocol(协议版本)

消息头是客户端发起请求时传递过来的一些附加信息,比如描述客户端是谁,以及希望与客户端如何通讯,描述消息正文的长度以及内容类型等信息。消息头由若干行组成,每一行为一个消息头,格式为Name :Value(CRLF)格式,当所有消息头全部发送完毕后会单独发送一个CRLF(回车符(CR)和换行符(LF))。一些消息头的名称的含义:

消息正文是二进制数据,内容是用户实际向服务端传递的数据。它可能是用户传递的注册用户的信息,上传的附件内容等。一个请求中可以不含有消息正文部分。请求中是否含有消息正文的一个重要标志是请求的消息头中是否含有以下两个头:

Http响应是服务器端发送给客户端的内容。一个响应应当包含三部分:状态行,响应头,响应正文

状态行格式分为三部分:Protocol(协议版本) Status_code(状态代码) Status_reason(状态描述) (CRLF)

状态代码是一个3位数字,分为5类:

常见状态代码:

响应头的格式与意义同请求中的信息头一样。一些响应头的名称的含义:

响应正文也是二进制数据,是服务端响应给客户端的实体数据,通常就是客户端所请求的资源。一个响应中是否含有响应正文可以通过响应头中的两个信息得知:

客户端就是通过这两个头来读取并理解响应正文内容的。

HTTP Streaming - 推送形式的数据传输技术

HTTP Streaming是一种推送形式的数据传输技术,它通过无限期开放的HTTP连接让web服务器(tomcat)能持续向客户端(浏览器)传送数据。在HTTP Streaming下,web服务器会握住客户端的请求并让返回保持开放,这样服务器可以通过返回一直发送数据。这个请求-返回的通道会一直开启,除非我们显示的要求关闭。

上一篇下一篇

猜你喜欢

热点阅读