相关文章参考:
https://github.com/yuantiku/YTKNetwork](https://github.com/yuantiku/YTKNetwork
http://www.jianshu.com/p/30dd2f665933
http://blog.csdn.net/majiakun1/article/details/49075917
填坑
1-1.开发碰到跟平台打交道,大多数采用的是json格式,但是YTKNetwork采用默认的是http,所以,如果项目的请求类型跟响应类型都是json,在你的请求类里边,重写这两个方法,否则请求失败
1-2 请求的参数,正常来说,如果使用AFN,除去请求header需要单独设置外,body的参数需要我们手动添加即可,但是YTKNetwork却不是,发送请求的header跟body 需要这么写(不知道是平台的原因,还是框架的原因)
1-3 线程问题,使用此类YTKChainRequest
例如,我们有一个需求,需要用户在注册时,先发送注册的Api,然后:
如果注册成功,再发送读取用户信息的Api。并且,读取用户信息的Api需要使用注册成功返回的用户id号。
如果注册失败,则不发送读取用户信息的Api了。
以下是具体的代码示例,在示例中,我们在sendChainRequest方法中设置好了Api相互的依赖,然后。 我们就可以通过chainRequestFinished回调来处理所有网络请求都发送成功的逻辑了。如果有任何其中一个网络请求失败了,则会触发chainRequestFailed回调。
- (void)sendChainRequest {
RegisterApi *reg = [[RegisterApi alloc] initWithUsername:@"username" password:@"password"];
YTKChainRequest *chainReq = [[YTKChainRequest alloc] init];
[chainReq addRequest:reg callback:^(YTKChainRequest *chainRequest, YTKBaseRequest *baseRequest) {
RegisterApi *result = (RegisterApi *)baseRequest;
NSString *userId = [result userId];
GetUserInfoApi *api = [[GetUserInfoApi alloc] initWithUserId:userId];
[chainRequest addRequest:api callback:nil];
}];
chainReq.delegate = self;
// start to send request
[chainReq start];
}
- (void)chainRequestFinished:(YTKChainRequest *)chainRequest {
// all requests are done
}
- (void)chainRequestFailed:(YTKChainRequest *)chainRequest failedBaseRequest:(YTKBaseRequest*)request {
// some one of request is failed
}