网络请求(HTTP协议)介绍
一、HTTP协议简单介绍
HTTP协议是网络请求中用得最为广泛的协议,全称为超文本传输协议,访问的是远程网络资源,格式是http://
二、通信过程
1、客户端向服务器发送请求,请求的内容包括:
(1)请求行(请求方法/HTTP协议/请求资源路径)
(2)请求头(描述客户端的信息)
(3)请求体(POST请求才需要有,存放具体参数)
2、服务器向客户端返回响应数据,响应的内容包括:
(1)状态行(响应行/状态码)
(2)响应头(服务器信息、返回数据的类型、返回数据类型的长度)
(3)响应体(返回给客户端的具体内容)
三、GET/POST请求
GET与POST请求是网络请求中最常用的两种请求方式。
1、GET请求:
参数直接拼接在URL后面,且参数有限制,地址最多255字节。
2、POST请求:
参数放在请求体中,没有限制。
四、同步请求与异步请求
1、同步请求:
一旦发送同步请求,客户端将停止用户交互,直到服务器响应并返回数据完成,才可以进行下一步操作。
2、异步请求:
通过开辟一个新的线程发送请求,不会阻塞主线程,用户依然可以与UI界面进行交互。
五、使用NSURLConnection发送同步/异步请求
1、发送同步请求:
+ (NSData*)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error;
2、发送异步请求(非代理方式)
+ (void)sendAsynchronousRequest:(NSURLRequest *) request
queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse*response, NSData* data, NSError* connectionError)) handler;
3、异步请求的代理方式
(1)[NSURLConnection connectionWithRequest:request delegate:self];
(2)[[NSURLConnection alloc] initWithRequest:request delegate:self];
(3)[[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
(4)NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
[conn start];
六、各种请求方式代码示例
请读者自行翻阅下面3篇文档,包括GET/POST同步请求,GET/POST异步请求非代理方式,异步请求代理方式。