美文网首页
YTKNetwork 的使用

YTKNetwork 的使用

作者: 垚子 | 来源:发表于2017-03-27 15:39 被阅读3188次

1.统一设置网络请求的服务器和 CDN 的地址

YTKNetworkConfig *config = [YTKNetworkConfig sharedInstance];
 config.baseUrl = @"http://yuantiku.com";
 config.cdnUrl = @"http://fen.bi";

2.YTKRequest类 覆盖以下方法

//拼接表示详细的url  
- (NSString *)requestUrl {
   // “http://www.yuantiku.com” 在 YTKNetworkConfig 中设置,这里只填除去域名剩余的网址信息
   return @"/iphone/register";
}
// 请求类型
- (YTKRequestMethod)requestMethod {
   return YTKRequestMethodPost;
}
//post请求体
- (id)requestArgument {
   return @{
       @"username": _username,
       @"password": _password
   };
}
//验证返回数据
- (id)jsonValidator {
   return @{
       @"nick": [NSString class],
       @"level": [NSNumber class]
   };
}
//设置一个3分钟的缓存,3分钟内调用调Api的start方法,实际上并不会发送真正的请求。
- (NSInteger)cacheTimeInSeconds {
 // cache 3 minutes, which is 60 * 3 = 180 seconds
 return 60 * 3;
 }
//使用useCDN 地址请求
- (BOOL)useCDN {
return YES;
}

//上传文件 我们可以通过覆盖 constructingBodyBlock 方法,来方便地上传图片等附件,如下是一个示例:
- (AFConstructingBlock)constructingBodyBlock {
return ^(id<AFMultipartFormData> formData) {
NSData *data = UIImageJPEGRepresentation(_image, 0.9);
NSString *name = @"image";
NSString *formKey = @"image";
NSString *type = @"image/jpeg";
[formData appendPartWithFileData:data name:formKey fileName:name mimeType:type];
};
}

- (id)jsonValidator {
return @{ @"imageId": [NSString class] };
}

- (NSString *)responseImageId {
NSDictionary *dict = self.responseJSONObject;
return dict[@"imageId"];
}
//重写 若这个方法返回非nil对象,会忽略requestUrl, requestArgument, requestMethod,requestSerializerType,requestHeaderFieldValueDictionary
- (NSURLRequest *)buildCustomUrlRequest {
NSData *rawData = [[_events jsonString] dataUsingEncoding:NSUTF8StringEncoding];
   NSData *gzippingData = [NSData gtm_dataByGzippingData:rawData];
   NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:self.requestUrl]];
   [request setHTTPMethod:@"POST"];
   [request addValue:@"application/json;charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
   [request addValue:@"gzip" forHTTPHeaderField:@"Content-Encoding"];
   [request setHTTPBody:gzippingData];
}
//设置请求头
- (NSDictionary<NSString *,NSString *> *)requestHeaderFieldValueDictionary {
   //设置通用header 签名
   return @{@"":@""};
}

3.其他类


/*请求多个类 
YTKBatchRequest
*/

/*依赖请求
YTKChainRequest
*/

4.调用

//具体的方法是直接使用 YTKRequest 的 - (BOOL)loadCacheWithError: 方法,即可获得上次缓存的内容。当然,你需要把 - (NSInteger)cacheTimeInSeconds 覆盖,返回一个大于等于 0 的值,这样才能开启 YTKRequest 的缓存功能,否则默认情况下,缓存功能是关闭的。
NSString *userId = @"1";
GetUserInfoApi *api = [[GetUserInfoApi alloc] initWithUserId:userId];
if ([api loadCacheWithError:nil]) {
NSDictionary *json = [api responseJSONObject];
NSLog(@"json = %@", json);
// show cached data
}
[api startWithCompletionBlockWithSuccess:^(YTKBaseRequest *request) {
NSLog(@"update ui");
} failure:^(YTKBaseRequest *request) {
NSLog(@"failed");
}];

5.other

Override
- (NSInteger)cacheTimeInSeconds;    //当前请求指定时间内,使用缓存数据
- (long long)cacheVersion;    //当前请求,指定使用版本号的缓存数据


搬运工:https://github.com/yuantiku/YTKNetwork

相关文章

  • YTKNetwork简单使用

    YTKNetwork是在AFNetworking的基础上进行封装。相信使用YTKNetwork的小伙伴,已经阅读了...

  • YTKNetwork 的使用

    1.统一设置网络请求的服务器和 CDN 的地址 2.YTKRequest类 覆盖以下方法 3.其他类 4.调用 5...

  • YTKNetwork的基本使用

    本人有若干成套学习视频, 可试看! 可试看! 可试看, 重要的事情说三遍 包含Java, 数据结构与算法, iOS...

  • YTKNetwork的基本使用

    YTKNetwork是一个对AFNetworking封装的一个框架,虽然二者底层原理相同,但使用方法和使用效果是大...

  • YTKNetwork

    YTKNetwork集成教程以及相关问题思考 源码解析之--YTKNetwork网络层 YTKNetwork源码解...

  • YTKNetwork 基本用法

    YTKNetwork Basic Guide:YTKNetwork 基本指导 In the article, we...

  • YTKNetwork 源码分析

    YTKNetworkAnalysis YTKNetwork 源码分析 1. 功能介绍 1.1 YTKNetwork...

  • iOS开发--YTKNetwork的使用

    今天学习了一下YTKNetwork,在此写下心得,记录学习历程 首先YTKNetwork的基本功能如下: 1,YT...

  • YTKNetwork集成教程以及相关问题思考

    YTKNetwork介绍 YTKNetwork 是猿题库 iOS 研发团队基于 AFNetworking 封装的 ...

  • 使用YTKNetwork Duplicate interface

    定义了一个请求基类继承于YTKRequest,但是编译的时候老是一大堆错误。原来是#import错误了。应该是 #...

网友评论

      本文标题:YTKNetwork 的使用

      本文链接:https://www.haomeiwen.com/subject/tysrottx.html