Git Product home page Git Product logo

rtnetworking's Introduction

rtnetworking's People

Contributors

casatwy avatar cctv1237 avatar chinsyo avatar czwen avatar damiansheldon avatar gitter-badger avatar xiky avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rtnetworking's Issues

调用RESTful API的时候怎么拼接参数

您好,我现在在项目中使用CTNetworking进行接口调用,目前采取的还是传统的方式,调用方提供参数字典,将参数字典按键值对的形式拼接在methodName的后面用问号分隔作为query,组成完整的url。

现在项目改造,统一采用RESTful API,想请教一下这种情况下该怎么去构造url。

Error Domain=NSURLErrorDomain Code=-999 "cancelled"

运行一个 https 请求总遇到 Error Domain=NSURLErrorDomain Code=-999 "cancelled" 搜了下资料说是sessionManager 提前被释放了,但是看了代码 sessionManager 并没有被释放,那么逐行排查到
CTApiProxy 代码 139 行 self.dispatchTable[requestId] = dataTask;

把这行代码注销了就能正常返回。请教下 casatwy 是什么原因?

CTAPIBaseManager里的 isLoading 为什么没有用?

CTAPIBaseManager里的 isLoading 没有用到,loadDataWithParams方法直接设置isLoading为YES,没有对isLoading进行判断,如果是取消外面飞着的请求,让新发起的请求起飞,但代码里没有cancel外面飞着的请求代码,这是为什么?

缓存bug

当service的extraParmas有值时,查询是否有缓存和保存缓存数据用的requestParams不同,导致读取缓存失败。读缓存时url key未带上extraParmas,而保存时url key 有extraParmas。

RTAPIBaseManager 错误处理

Components/Components/RTAPIBaseManager.m该文件中的failedOnCallingAPI:withErrorType:方法,是不是应该修改fetchedRawData。有时fetchedRawData会持有成功时的数据。

疑问

一个请求对应一个apiManager ?

你好。有个问题请教一下

在使用框架的过程中,我使用vc的dealloc调用[manager cancelAllRequests],最后在网络请求cancel了以后,由于页面被销毁,导致manager被销毁,
__strong typeof(weakSelf) strongSelf = weakSelf;
[strongSelf failedOnCallingAPI:response withErrorType:CTAPIManagerErrorTypeDefault];
上面的代码走不了正常的回调流程,有好的解决办法吗?

请求错误返回status 0

在使用该网络库请求的时候,某一个请求总是返回status 0 ,
Error Domain Code: -999
Error Localized Description: 已取消

Why not pack as a pod?

It seems that the content of section of Adding CTNetworking to your project is empty in README.Why no pack as a pod just as early version, so it can be used directly without adding source files or modifying implement of some method. Can we through some configure methods or other means archive the same effect, I consider these ways better than add source file to framework or modify implement of some method in framework.

AFNetworkReachabilityStatusUnknown 状态时为什么返回的不是 NO?

- (BOOL)isReachable { if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusUnknown) { return YES; } else { return [[AFNetworkReachabilityManager sharedManager] isReachable]; } }

CTAppContext 第 160 行, AFNetworkReachabilityStatusUnknown 状态时为什么返回的不是 NO?

关于shouldCallBackByFailedOnCallingAPI的参数

GDMapService.m中的shouldCallBackByFailedOnCallingAPI方法总
// token 无效,重新登录
[[NSNotificationCenter defaultCenter] postNotificationName:kBSUserTokenIllegalNotification
object:nil
userInfo:@{
kBSUserTokenNotificationUserInfoKeyRequestToContinue:[response.request mutableCopy],
kBSUserTokenNotificationUserInfoKeyManagerToContinue:self
}];
此处kBSUserTokenNotificationUserInfoKeyManagerToContinue:对应self,这块self是service,
是不是应该是manager?或者service中有办法可以获得manager?

post 请求应删除 request.HTTPBody 赋值

CTRequestGenerator 第 84 行

NSMutableURLRequest *request = [self.httpRequestSerializer requestWithMethod:@"PUT" URLString:urlString parameters:requestParams error:NULL]; request.HTTPBody = [NSJSONSerialization dataWithJSONObject:requestParams options:0 error:NULL];

第二行代码给 HTTPBody 的值是未经格式化的字典类型 requestParams ,并且覆盖了第一行代码给 HTTPBody 的值,正确的应该是 key=value&key2=value2

服务器返回的数据reformer的问题

您好,麻烦问一下,对于服务器返回的数据,如果是下面的图片这样的:
image
那这个怎么去model化啊,这个name在使用的时候肯定被当作是NSString的对象,但是如果服务器返回是上图那样的数据的话,取出来是一个 NSNull 的对象,被当作NSString 的对象去使用就会有问题。
这个如果在回调的数据那里校验的话,层级如果太深,而且回来的数据是NSString对象的太多了,感觉会写很多校验的代码。但是如果转model的话,转model的框架就会对这个进行处理了。想问一下对于这个情况casa是怎么处理的啊?

HTTPS

casa大神,如果在现有基础上支持HTTPS,有什么思路可以参考的?

网络请求 不能正常的接受回调;Batch、Chain请求如何优雅的实现

在gitter上提问请教但 没回复,也没找到 评论区在哪,只能在这个发个 issue,请教下 如下两个问题

- (void)dealloc { [self cancelAllRequests]; self.requestIdList = nil; }

CTAPIBaseManager 这里的 dealloc,取消所有的请求 是否不太合理,这样就要求 调用的地方 必须持有 发起请求的 实例才能正常接受到 回调,理论上 请求是否被取消 不应该跟 发起者的生命周期强依赖;

2、网络请求 都用delegate的方式来处理回调,按照 .key里面的解释 确实带来的非常多的好处。 如果遇到 这两种场景:1:A、B、C、D 这个作为一组 Batch请求 ;2:A、B、C、D 这个作为一组后者依赖前者回调结束才发起 的 Chain请求,请教 该如何优雅的实现?

一个controller中多个请求

casa,一个controller中多个请求的情况,APIManager参数和回调的代理方法中除了使用if-else来判断属于哪个请求,还有什么更优雅的方式吗?
image

如何优雅的在成功回调方法区分是刷新还是加载?

你好,很喜欢你的网络层架构的思路,所以按照你的方法自己写了一个,因为项目较小所以做了些精简,基本的**还是用delegate代替block,然后每个接口用一个apiManager集成自baseApiMananger,对数据还是采用了datamodle的形式,但遇到一个问题 ,loaddata 和 loadnextpage 返回都会调用 - (void)managerCallAPIDidSuccess:(CTAPIBaseManager *)manager 方法,那如何区分是刷新还是下载下一页呢?通过 manager 的response 里面的数据去区分是个好方法吗?

网络请求不同

CTAPIManagerErrorTypeNoNetWork 给这个错误,但是网络是通的,iPhone7,无线和蜂窝移动都不行。大佬麻烦您看一下,我要怎么改

Xcode Version 8.3.2 (8E2002) ios 10.3 第二次请求同一个api 报错处理

场景:用户登录第一次登录失败,再次点击登录,会报如下错误。
[AFHTTPRequestSerializer requestWithMethod:URLString:parameters:error:]: message sent to deallocated instance 0x6080002ab8e0
解决方案:修改CTRequestGenerator.m
1、将第 22 行 改为 @Property (nonatomic, weak) AFHTTPRequestSerializer *httpRequestSerializer;
2、将第 124 - 134 行注释去掉,再次运行问题得已解决。
问题原因我尚未分析清楚,有弄明白的哥们还请分享下。

CTNetworkingConfigurationManager

你好,
在 CTNetworkingConfigurationManager 有 serviceIsOnline property,然后 GDMapService 的 isOnline 是返回 CTNetworkingConfigurationManager 的 serviceIsOnline,如果在测试期间,有的 Service 要用到线上环境,有的用到线下环境,感觉由 CTNetworkingConfigurationManager 提供这个设置不太好,由 Service 各自控制会比较好些?

闪退

0 CoreFoundation ___exceptionPreprocess + 228
1 libobjc.A.dylib objc_exception_throw + 56
2 CFNetwork -[__NSCFURLLocalSessionConnection _tick_initialize]
3 AFNetworking __93-[AFURLSessionManager dataTaskWithRequest:uploadProgress:downloadProgress:completionHandler:]_block_invoke + 60
4 AFNetworking url_session_manager_create_task_safely + 96
5 AFNetworking -[AFURLSessionManager dataTaskWithRequest:uploadProgress:downloadProgress:completionHandler:] + 216
6 FlexibleAIFNetworking -[AIFApiProxy callApiWithRequest:progress:success:fail:] + 340
7 FlexibleAIFNetworking -[AIFApiProxy callGETWithParams:serviceIdentifier:methodName:fileName:additionalHTTPHeader:progress:success:fail:] + 328
8 FlexibleAIFNetworking -[RTAPIBaseManager loadDataWithParams:] + 2104
9 FlexibleAIFNetworking -[RTAPIBaseManager loadData] + 100

关于 AIFLoggerConfiguration

hi @casatwy
请问,AIFLoggerConfiguration.m 的作用是什么?AIFLoggerConfiguration.m 里面的变量,赋值之后好像就没使用了。AIFLogger 带上传log 功能吗?
我想将 RTNetworking 改造成可移植的库。

适配AFNetworking 3.2版本的https

AFNetworking 3.2版本,AFHTTPSessionManager以AFSSLPinningModeCertificate或者AFSSLPinningModePublicKey模式创建时,必须传进baseUrl,否则会crash,如下代码在3.2以下版本不会crash,升级到3.2就会

- (AFHTTPSessionManager *)sessionManager {
    if (!_sessionManager) {
        _sessionManager = [AFHTTPSessionManager manager];
        _sessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
        
        NSBundle *bundle = [NSBundle bundleForClass:[self class]];
        NSSet<NSData *> *certs = [AFSecurityPolicy certificatesInBundle:bundle];
        AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate withPinnedCertificates:certs];
        securityPolicy.allowInvalidCertificates = NO;
        securityPolicy.validatesDomainName = YES;
        _sessionManager.securityPolicy = securityPolicy;
    }
    
    return _sessionManager;
}

CTAPIManagerValidator为什么没声明获取最后验证错误信息的方法?

由于 CTAPIManagerValidator 没声明获取最后验证错误信息的方法,所以在 CTAPIBaseManager 的方法里只能笼统地返回CTAPIManagerErrorTypeParamsError。有看到 CTAPIBaseManager 声明只读的 errorMessage 属性,理论上子类覆盖为 readwirte, 然后 CTAPIManagerValidator 验证的时候把错误信息写到它里面也可以传递出来,但这个事情和 CTAPIManagerValidator 更紧密,为什么不直接在它里面声明个 readonly 的类似 lastError 的属性呢?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.