YTKNetWork2.0使用總結(jié)

YTKNetWork升級(jí)到2.0版本后變化很大,現(xiàn)在針對(duì)返回?cái)?shù)據(jù)格式“content-type”和配置默認(rèn)參數(shù)做一個(gè)記錄

1.先說一下返回?cái)?shù)據(jù)格式“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 @""      //正式環(huán)境
#define BASE_URL_2 @""      //內(nèi)部測(cè)試服務(wù)器
#define BASE_URL_3 @""      //外部測(cè)試服務(wù)器

@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];

//服務(wù)端返回格式問題,后端返回的結(jié)果不是"application/json",afn 的 jsonResponseSerializer 是不認(rèn)的。這里做臨時(shí)處理
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.配置默認(rèn)參數(shù)

這里不解釋原來的用法了,下面也是直接上代碼:

#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];//時(shí)間戳
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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容