參考:3.0 源碼解讀(二)之 AFHTTPSessionManager
說明:很多內(nèi)容都是摘抄原文最欠,只是根據(jù)自己的需要進(jìn)行摘抄或者總結(jié)翠勉,如有不妥請(qǐng)及時(shí)指出荚斯,謝謝埠居。
AFHTTPSessionManager
是AFURLSessionManager
的子類查牌,是專門為HTTP請(qǐng)求設(shè)計(jì)的。里邊涉及到了GET,POST,PUT,DELETE 等等HTTPMehtod滥壕。因此我們要想正確的使用各種方法纸颜,就要理解每個(gè)method的含義。
可以通過這篇文章來了解HTTP Method詳細(xì)解讀(GET
HEAD
POST
OPTIONS
PUT
DELETE
TRACE
CONNECT
)绎橘。
相對(duì)路徑(relative)
假如有一個(gè)基礎(chǔ)路徑NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"];我們暫時(shí)命名為baseURL.所謂 相對(duì) 肯定跟這個(gè)baseURL有關(guān)系胁孙。
我們可以通過NSURL +URLWithString:relativeToURL:這個(gè)方法來獲取一個(gè)路徑,至于怎么使用称鳞,我們通過一個(gè)例子來說明:
NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"];
[NSURL URLWithString:@"foo" relativeToURL:baseURL];
// http://example.com/v1/foo
[NSURL URLWithString:@"foo?bar=baz" relativeToURL:baseURL];
// http://example.com/v1/foo?bar=baz
[NSURL URLWithString:@"/foo" relativeToURL:baseURL];
// http://example.com/foo
[NSURL URLWithString:@"foo/" relativeToURL:baseURL];
// http://example.com/v1/foo
[NSURL URLWithString:@"/foo/" relativeToURL:baseURL];
// http://example.com/foo/
[NSURL URLWithString:@"http://example2.com/" relativeToURL:baseURL];
// http://example2.com/
部分總結(jié)
到目前為止涮较,AFN的核心模塊都分析完了,那對(duì)接口的調(diào)用順序進(jìn)行簡(jiǎn)單的總結(jié)冈止,拿post方法為例
時(shí)序圖只是為了描述類的調(diào)用順序狂票,不規(guī)范的地方請(qǐng)主動(dòng)忽略,大類中的派生類沒有畫出來
再用文字簡(jiǎn)單描述一下:
1熙暴、創(chuàng)建request
2闺属、使用session根據(jù)request創(chuàng)建task
3、綁定block
4周霉、啟動(dòng)task
5掂器、接收數(shù)據(jù)回掉
6、完成俱箱,任務(wù)結(jié)束