参考:3.0 源码解读(二)之 AFHTTPSessionManager
说明:很多内容都是摘抄原文,只是根据自己的需要进行摘抄或者总结,如有不妥请及时指出,谢谢。
AFHTTPSessionManager
是AFURLSessionManager
的子类,是专门为HTTP请求设计的。里边涉及到了GET,POST,PUT,DELETE 等等HTTPMehtod。因此我们要想正确的使用各种方法,就要理解每个method的含义。
可以通过这篇文章来了解HTTP Method详细解读(GET
HEAD
POST
OPTIONS
PUT
DELETE
TRACE
CONNECT
)。
相对路径(relative)
假如有一个基础路径NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"];我们暂时命名为baseURL.所谓 相对 肯定跟这个baseURL有关系。
我们可以通过NSURL +URLWithString:relativeToURL:这个方法来获取一个路径,至于怎么使用,我们通过一个例子来说明:
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/
部分总结
到目前为止,AFN的核心模块都分析完了,那对接口的调用顺序进行简单的总结,拿post方法为例
时序图只是为了描述类的调用顺序,不规范的地方请主动忽略,大类中的派生类没有画出来
再用文字简单描述一下:
1、创建request
2、使用session根据request创建task
3、绑定block
4、启动task
5、接收数据回掉
6、完成,任务结束