iOS开发之YTKNetwork 填坑

2017-08-01  本文已影响481人  朱晓晓的技术博客

相关文章参考:
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可以每个请求都单独出来,对于大型的项目开发,管理上有一定优势
上一篇下一篇

猜你喜欢

热点阅读