相關(guān)文章參考:
https://github.com/yuantiku/YTKNetwork](https://github.com/yuantiku/YTKNetwork
http://www.itdecent.cn/p/30dd2f665933
http://blog.csdn.net/majiakun1/article/details/49075917
填坑
1-1.開發(fā)碰到跟平臺(tái)打交道,大多數(shù)采用的是json格式,但是YTKNetwork采用默認(rèn)的是http,所以,如果項(xiàng)目的請(qǐng)求類型跟響應(yīng)類型都是json,在你的請(qǐng)求類里邊,重寫這兩個(gè)方法,否則請(qǐng)求失敗

默認(rèn)請(qǐng)求和響應(yīng)類型

手動(dòng)更改
1-2 請(qǐng)求的參數(shù),正常來(lái)說(shuō),如果使用AFN,除去請(qǐng)求header需要單獨(dú)設(shè)置外,body的參數(shù)需要我們手動(dòng)添加即可,但是YTKNetwork卻不是,發(fā)送請(qǐng)求的header跟body 需要這么寫(不知道是平臺(tái)的原因,還是框架的原因)

image.png
1-3 線程問題,使用此類YTKChainRequest
例如,我們有一個(gè)需求,需要用戶在注冊(cè)時(shí),先發(fā)送注冊(cè)的Api,然后:
如果注冊(cè)成功,再發(fā)送讀取用戶信息的Api。并且,讀取用戶信息的Api需要使用注冊(cè)成功返回的用戶id號(hào)。
如果注冊(cè)失敗,則不發(fā)送讀取用戶信息的Api了。
以下是具體的代碼示例,在示例中,我們?cè)趕endChainRequest方法中設(shè)置好了Api相互的依賴,然后。 我們就可以通過chainRequestFinished回調(diào)來(lái)處理所有網(wǎng)絡(luò)請(qǐng)求都發(fā)送成功的邏輯了。如果有任何其中一個(gè)網(wǎng)絡(luò)請(qǐng)求失敗了,則會(huì)觸發(fā)chainRequestFailed回調(diào)。
- (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
}