learning AFNetworking

| 分类 ios  | 标签 iOS  network 

下文针对1.x

AFNetworking-1.x(2.x架构已经完全不一样了)针对不同的请求数据类型有不同的类,如果json, xml, 图片的等。还有个AFHTTPClient包含 与API交互的通用模式,如果设置请求的HTTP头或使每个请求使用相对路径。然而,不要直接使用AFHTTPClient,应该创建它的子类,从而可以定义有base URL的单例,并且所有的请求基于该base URL使用相对路径完成。

@interface ALGitHubAPIClient : AFHTTPClient
+ (ALGitHubAPIClient *)sharedClient;
+ @end

实现下面的方法:

static NSString * const kAFGitHubAPIBaseURLString = @"https://api.github.com/";

+ (ALGitHubAPIClient *)sharedClient {
    static ALGitHubAPIClient*_sharedClient = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _sharedClient = [[ALGitHubAPIClient alloc] initWithBaseURL:[NSURL URLWithString:kAFGitHubAPIBaseURLString]];
    });

    return _sharedClient;
}

- (id)initWithBaseURL:(NSURL *)url 
{
  self = [super initWithBaseURL:url];
  if (!self) return nil;

  //这里定义了返回数据类型
  [self registerHTTPOperationClass:[AFJSONRequestOperation class]];
  //定义了头部
  [self setDefaultHeader:@"Accept" value:@"application/json"];
  return self;
}

上一篇     下一篇