CTNetworking icon indicating copy to clipboard operation
CTNetworking copied to clipboard

iOS networking API layer

Results 12 CTNetworking issues
Sort by recently updated
recently updated
newest added

这个PR我把loadDataWithParams实例方法放到了CTAPIBaseManager头文件中,变成了公共方法 原因: 项目中新新开发的restAPI接口有些参数放到了method中,例如 ` - (NSString *)methodName { return [NSString stringWithFormat:@"moarestapi/im/chat/%@/user/undisturbedstatus", self.conversationId]; } ` 需要在method中拼接一些参数,比如uid、conversationId之类的,这就导致这些API无法使用类方法的loadDataWithParams来发起请求,因为methodName方法是实例方法。只能通过实例方法loadData,通过代理回调的方式来处理响应,形成了一定的限制。所以我觉得可以开放loadDataWithParams实例方法,来方便使用。

APP的网络请求用的这个库,后台有一些崩溃日志是这个库里面的崩溃,崩在这个位置: 怀疑是dispatchTable这个字典的访问没有加锁,多线程访问的情况下出现了崩溃

有这样一个需求,App 大量的请求需要依赖一个 ticket。 对这个 ticket 的设计是 30 分钟时效,要客户端自己做时间戳判断,过期就要先请求 ticket,再发本来的请求。 这样我无论如何都想不到比较优雅的方法在底层处理,不知大神有没有想法。

当viewController死亡后,CTAPIBaseManager的dealloc并没有如期调用,需要等到请求完毕时,才会调用。 下面代码的闭包对CTAPIBaseManager对象进行了强引用,所以没有如期死亡。这也跟旧框架RTNetworking代码不同,现在是这样设计的吗? CTNetworking代码: NSNumber *requestId = [[CTApiProxy sharedInstance] callApiWithRequest:request success:^(CTURLResponse *response) { [self successedOnCallingAPI:response]; } fail:^(CTURLResponse *response) { CTAPIManagerErrorType errorType = CTAPIManagerErrorTypeDefault; if (response.status == CTURLResponseStatusErrorCancel) { errorType = CTAPIManagerErrorTypeCanceled;...

`- (void)saveMemoryCacheWithResponse:(CTURLResponse *)response serviceIdentifier:(NSString *)serviceIdentifier methodName:(NSString *)methodName cacheTime:(NSTimeInterval)cacheTime { if (response.originRequestParams && response.content && serviceIdentifier && methodName) { [self.memoryCacheCenter saveCacheWithResponse:response key:[self keyWithServiceIdentifier:serviceIdentifier methodName:methodName requestParams:response.originRequestParams] cacheTime:cacheTime]; } } ` 请求没有参数时,`originRequestParams`为空就没办法缓存了。处于什么考虑呢?

如果我实现了一个CTAPIBaseManager的子类A, 然后想通过类方法loadDataWithParams请求网络,这时只返回了requesId,没有实例调用CancelRequest。

框架只有Form表单的请求方式,入参必须是字典,请问如何优雅的扩展JSON MULTIPART的请求方式

casa你好,首先非常感谢你提供这么灵活优雅的网络框架。 我在使用过程中遇到以下疑惑,还请指导: 1. 在设置cachePolicy之后,还需要在Service中,设置新生成的request的originRequestParams和actualRequestParams,不太理解两个参数的具体含义,应该分别传什么参数,传哪里来的参数; 2. CTLogger能否提供定制化日志打印的接口呢?方便使用pod接入CTNetworking的开发者定制化自己的log,目前我是通过分类来重写CTLogger中的方法,这样XCode会有警告:Category is implementing a method which will also be implemented by its primary class; 3. CTURLResponse中,actualRequestParams拼成了acturlRequestParams; 4. CTLogger中,缓存响应时打印了response.originRequestParams和response.acturlRequestParams,但是缓存CTURLResponse时只保存了content,所以这两个值永远打印为空; 5. CTLogger中NSLog打印过长的字符串会显示不完整; 6. 目前工作中不同业务会有不同的服务,但是会有相同的鉴权方式,那这些鉴权用的公共参数在哪里传比较好呢?我目前的做法是像CTAPIBaseManager封装一个BaseService,处理一些公共逻辑和传入公共参数,然后不同的业务派生不同的Service,是否有更好的处理方法呢? 谢谢!

casatwy您好,看你博客收益匪浅,拜读完看到您关于网络层的文章,如雷灌顶,急切想追看您的PPT,无奈已经找不到了,愿请前辈再发放出来,晚辈不胜感激!

CTApiProxy中 `NSDictionary *result = [request.service resultWithResponseObject:responseObject response:response request:request error:&error];` 如果上面返回的error是nil,对error取地址的话是有值的 接下来Demoservice中,提前返回了,造成请求成功时kCTApiProxyValidateResultKeyResponseObject里面的值为空,后面的请求结果拿不到值 `- (NSDictionary *)resultWithResponseObject:(id)responseObject response:(NSURLResponse *)response request:(NSURLRequest *)request error:(NSError **)error { NSMutableDictionary *result = [[NSMutableDictionary alloc] init]; if (error ||...