iOS開發(fā)網(wǎng)絡(luò)篇—網(wǎng)絡(luò)請(qǐng)求(HTTP協(xié)議)小結(jié)
1. 聊一下HTTP協(xié)議(協(xié)議的完整的通信過程)
2.通信過程
1> 請(qǐng)求
* 客戶端 --> 服務(wù)器
* 請(qǐng)求的內(nèi)容
a. 請(qǐng)求行(請(qǐng)求方法\HTTP協(xié)議\請(qǐng)求資源路徑)
b. 請(qǐng)求頭(描述客戶端的信息)
c. 請(qǐng)求體(POST請(qǐng)求才需要有, 存放具體數(shù)據(jù))
2> 響應(yīng)
* 服務(wù)器 --> 客戶端
* 響應(yīng)的內(nèi)容
a. 狀態(tài)行(響應(yīng)行, 狀態(tài)碼)
b. 響應(yīng)頭(服務(wù)器信息, 返回?cái)?shù)據(jù)的類型, 返回?cái)?shù)據(jù)的長(zhǎng)度)
c. 實(shí)體內(nèi)容(響應(yīng)體, 返回給客戶端的具體內(nèi)容)
3.HTTP請(qǐng)求的方法
1> GET
* 參數(shù)都拼接在URL后面
* 參數(shù)有限制
2> POST
* 參數(shù)都在請(qǐng)求體
* 參數(shù)沒有限制
4.iOS中發(fā)送GET\POST請(qǐng)求的手段
1> NSURLConnection
* 發(fā)送一個(gè)同步請(qǐng)求
+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error;
* 發(fā)送一個(gè)異步請(qǐng)求
+ (void)sendAsynchronousRequest:(NSURLRequest*) request
queue:(NSOperationQueue*) queue
completionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError)) handler;
* 代理的方法(異步)
[NSURLConnection connectionWithRequest:request delegate:self];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
[[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
[conn start];