XTReq
cocoapods
pod 'XTReq'
#import "XTReq.h"
XTRequest
基于 XTFMDB & AFNetworking & ReactiveCocoa 构建
- 共享一个管理者
- 异步和同步
- GET / POST / PUT,快速添加 HTTP header / formdata / rawbody
- 记录结果
- 显示 hud
- 取消所有请求数据
- 上传图像
- 下载
- 可访问性
- RAC 信号
XTCacheRequest
- 持久化保存请求的响应。
- 三种保存请求的策略。
- 可以控制在服务器崩溃或出现错误时是否保存。
- 请参考
XTRequest
async
[XTRequest GETWithUrl:kURLstr
header:nil
hud:YES
parameters:nil
taskSuccess:^(NSURLSessionDataTask *task, id json) {
} fail:^{
}] ;
原始内容
[XTRequest POSTWithURL:url
header:
param:
rawBody:
hud:
success:
fail: ] ;
同步
id json = [XTRequest syncWithReqMode:
url:
header:
parameters:] ;
XTCacheRequest
在appDidLaunch中进行准备
[XTCacheRequest configXTCacheReqWhenAppDidLaunchWithDBName:@"yourDB"] ;
XTCacheRequest 判断结果指定主函数
@param reqMode XTRequestMode get / post mode .
@param url string
@param hud bool
@param header dic HTTP header if has .
@param param dic param if has .
@param body str post rawbody if has .
@param cachePolicy XTReqPolicy req policy .
@param overTimeIfNeed INT (seconds) only in XTReqPolicyOverTime mode .
@param completion (XTReqSaveJudgment(^)(BOOL isNewest, id json))completion
PARAM isNewest : isCacheOrNewest
PARAM json : respObj
RETURN XTReqSaveJudgment : judge If Need Cache
XTReqPolicy
typedef NS_OPTIONS(NSUInteger, XTReqPolicy) {
XTReqPolicy_NeverCache_WaitReturn = XTResponseCachePolicyNeverUseCache | XTResponseReturnPolicyWaitUtilReqDone , // DEFAULT
XTReqPolicy_AlwaysCache_WaitReturn = XTResponseCachePolicyAlwaysCache | XTResponseReturnPolicyWaitUtilReqDone ,
XTReqPolicy_OverTime_WaitReturn = XTResponseCachePolicyOverTime | XTResponseReturnPolicyWaitUtilReqDone ,
XTReqPolicy_NeverCache_IRTU = XTResponseCachePolicyNeverUseCache | XTResponseReturnPolicyImmediatelyReturnThenUpdate ,
XTReqPolicy_AlwaysCache_IRTU = XTResponseCachePolicyAlwaysCache | XTResponseReturnPolicyImmediatelyReturnThenUpdate ,
XTReqPolicy_OverTime_IRTU = XTResponseCachePolicyOverTime | XTResponseReturnPolicyImmediatelyReturnThenUpdate ,
} ;
处理脏数据
使用XTReqSaveJudgment块
- XTReqSaveJudgment_willSave
- XTReqSaveJudgment_NotSave
[XTCacheRequest cacheGET:kURLstr
parameters:nil
judgeResult:^XTReqSaveJudgment(id json) {
if (!json) {
return XTReqSaveJudgment_NotSave ; // dirty data will not save
}
else {
[self showInfoInAlert:[json yy_modelToJSONString]] ;
return XTReqSaveJudgment_willSave ;
}
}] ;