HTTP通信过程 ---- 请求
具体过程
1. HTTP协议规定:一个完整的由客户端发给服务器的HTTP请求中包含以下内容
A - 请求行:包含了请求方法,请求资源路径,HTTP协议版本
GET /Server/resource/images/1.jpg HTTP/1.1
B - 请求头:包含了对客户端的环境描述、客户端请求的主机IP地址、等信息。如(IPHONE客户端,IPA客户端,MAC客户端)
Host:192.168.1.254:8080 //客户端想访问的主机服务器地址
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:43.0) Gecko/20100101 Firefox/43.0 //客户端环境类型
Accept: text/html,(缺省) //客户端环境能接收的数据类型
Accept-Encoding //客户端支持数据的压缩格式
Accept-Language //客户端语言环境
C - 请求体:客户端发给服务器的具体数据,比如文件数据等、
Referer: http://127.0.0.1:8080/Server/
2.总上所述:GET是把所有参数放到URL后面,POST是把所有参数放到请求体里面。
HTTP通信过程 ---- 响应
客户端向服务器发送请求,服务器应当做出相应操作,及时返回数据给客户端。
1:HTTP协议规定: 一个完整的HTTP响应包含以下内容
A - 状态行:包含了HTTP协议版本、状态码、状态英文名称
常见错误状态码
B - 响应头:包含了对服务器的描述、对返回数据的描述
Server: Apache - coyote/1.1 //服务器的类型
Content-Type: image/jpg //返回的数据类型
Content-Length:56811 //返回数据长度
Data: Mon,23 Jun 2014 12:54:52 CMT //响应时间
C - 实体内容:服务器返回给客户端的具体数据,比如文件数据
开发中真正打交道的其实是实体内容
例:
<span style="font-size:18px;"><span style="font-size:18px;color:#CC0000;">[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
// 取出状态码
NSInteger status = ((NSHTTPURLResponse*)response).statusCode;
// 取出响应字符串
NSString* msg = [NSHTTPURLResponse localizedStringForStatusCode:status];
//这里的data才是实体数据,而响应头存在response里
//这些信息一般适用于文件下载时。
}];</span></span>