YTKNetWork2.0使用总结

作者: 勇不言弃92 | 来源:发表于2017-03-29 09:58 被阅读1275次

YTKNetWork升级到2.0版本后变化很大,现在针对返回数据格式“content-type”和配置默认参数做一个记录

1.先说一下返回数据格式“content-type”,直接上代码

#import <Foundation/Foundation.h>

@interface BaseNetConfig : NSObject

@singleton(BaseNetConfig);

-(void)configGlobalAPI;

@end


#import "BaseNetConfig.h"
#import <YTKNetworkConfig.h>
#import <YTKNetworkAgent.h>
#import "BaseUrlFilter.h"

#define BASE_URL_1 @""      //正式环境
#define BASE_URL_2 @""      //内部测试服务器
#define BASE_URL_3 @""      //外部测试服务器

@implementation BaseNetConfig

@def_singleton(BaseNetConfig);

- (instancetype)init
{
self = [super init];
if (self) {

}
return self;
}

-(void)configGlobalAPI
{
YTKNetworkConfig *config = [YTKNetworkConfig sharedConfig];
config.baseUrl=BASE_URL_1;
config.cdnUrl=@"";
BaseUrlFilter *filter = [BaseUrlFilter filterWithArguments:nil];
[config addUrlFilter:filter];

//服务端返回格式问题,后端返回的结果不是"application/json",afn 的 jsonResponseSerializer 是不认的。这里做临时处理
YTKNetworkAgent *agent = [YTKNetworkAgent sharedAgent];
[agent setValue:[NSSet setWithObjects:@"application/json", @"text/plain", @"text/javascript", @"text/json",@"text/html", nil]
forKeyPath:@"jsonResponseSerializer.acceptableContentTypes"];
}
@end

特别需要注意的是[agent setValue:[NSSet setWithObjects:@"application/json", @"text/plain", @"text/javascript", @"text/json",@"text/html", nil]
forKeyPath:@"jsonResponseSerializer.acceptableContentTypes"];中key值改为了“jsonResponseSerializer.acceptableContentTypes”

2.配置默认参数

这里不解释原来的用法了,下面也是直接上代码:

#import <Foundation/Foundation.h>
#import "YTKNetworkConfig.h"
#import "YTKBaseRequest.h"

@interface BaseUrlFilter : NSObject<YTKUrlFilterProtocol>

+ (BaseUrlFilter *)filterWithArguments:(NSDictionary *)arguments;

@end


#import "BaseUrlFilter.h"
#import "AFURLRequestSerialization.h"

@implementation BaseUrlFilter{

NSDictionary *_arguments;
}

+ (BaseUrlFilter *)filterWithArguments:(NSDictionary *)arguments {

if (arguments==nil) {

int time = (int)[[NSDate date] timeIntervalSince1970];//时间戳
NSString *sign = [[[NSString stringWithFormat:@"%@%d%@%@",KAppId,time,kAppToken,KAppSignKay] MD5Hash] lowercaseString];//sign值

return [[self alloc]initWithArguments:@{@"appID":KAppId,@"ts":[NSString stringWithFormat:@"%d",time],@"sign":sign}];

}
else{
return [[self alloc] initWithArguments:arguments];
}

}
- (id)initWithArguments:(NSDictionary *)arguments {
self = [super init];
if (self) {
_arguments = arguments;
}
return self;
}

- (NSString *)filterUrl:(NSString *)originUrl withRequest:(YTKBaseRequest *)request {
NSLog(@"_arguments:%@",request.requestArgument);
return [self urlStringWithOriginUrlString:originUrl appendParameters:_arguments];
}


- (NSString *)urlStringWithOriginUrlString:(NSString *)originUrlString appendParameters:(NSDictionary *)parameters {
NSString *filteredUrl = originUrlString;
NSString *paraUrlString = [self urlParametersStringFromParameters:parameters];
if (paraUrlString && paraUrlString.length > 0) {
if ([originUrlString rangeOfString:@"?"].location != NSNotFound) {
filteredUrl = [filteredUrl stringByAppendingString:paraUrlString];
} else {
filteredUrl = [filteredUrl stringByAppendingFormat:@"?%@", [paraUrlString substringFromIndex:1]];
}
return filteredUrl;
} else {
return originUrlString;
}
}

- (NSString *)urlParametersStringFromParameters:(NSDictionary *)parameters {
NSMutableString *urlParametersString = [[NSMutableString alloc] initWithString:@""];

if (parameters && parameters.count > 0) {
for (NSString *key in parameters) {
NSString *value = parameters[key];
value = [NSString stringWithFormat:@"%@",value];
value = [self urlEncode:value];
[urlParametersString appendFormat:@"&%@=%@", key, value];
}
}
return urlParametersString;
}

- (NSString*)urlEncode:(NSString*)str {
return AFPercentEscapedStringFromString(str);
}

@end

相关文章

网友评论

    本文标题:YTKNetWork2.0使用总结

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