iOS开发之YTKNetwork 填坑

相关文章参考:
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 需要这么写(不知道是平台的原因,还是框架的原因)
image.png
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
}
个人建议,如果项目不是特别的复杂,请求类之间需要特别的依赖,用AFN就足够,反过来说,使用YTK可以每个请求都单独出来,对于大型的项目开发,管理上有一定优势
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容