AFNetworking 2.0 - 是不是使用子类?

Posted

技术标签:

【中文标题】AFNetworking 2.0 - 是不是使用子类?【英文标题】:AFNetworking 2.0 - using a subclass or not?AFNetworking 2.0 - 是否使用子类? 【发布时间】:2013-11-01 06:04:13 【问题描述】:

所以过去几天我一直在与AFNetworking 2.0 合作,一切进展顺利——我使用它的次数越多,我就开始了解它。

昨天我意识到我正在构建一个类来处理我的应用程序的 Web 服务 - GET / POST /DELETE 等。

现在,AFNetworking 已经处理了这些事情,没有理由构建我自己的方法。然而,这是我陷入困境的部分。

这是我想做的一个简短的例子:

DataStore 类型的课程中,我想做这样的事情:

RCBaseDataStore.h

-(void)handelWebService: (int) webServiceID 


    Switch (webServiceID) 

    case: GET_STORE_ITEMS_WSID 
    
       BBWebService *newService = [[BBWebService alloc]initWithURL:URL 
                                                       RequestType:@"GET" 
                                                       PostDataValuesAndKeys:nil 
                                                       RequestProperties:nil 
                                                       UrlParameters:urlParams];
     

 

在上面 - 我使用了 Web 服务 ID 的索引 - 这允许使用 switch 语句 - 但是有 30 或 40 个 Web 服务 - 所以这个方法会增长......很多。

我现在需要做的是让BBWebService 作用于该 URL - 然后构建 URL 并将参数放在一起 - 然后我将其交给 BBWebService 内的另一个方法,该方法运行 GET / POST requests

我面临的问题:

    AFNetworking 完成所有这些(构建 URL 并运行请求) - 我如何使用它使用的方法 - 无需重新定义它们,而只是添加它们?

例如GET / POST requests - 我需要将responseObject 存储在NSData object 中,我可以这样做。但我不想在RCBaseDataStore 中使用这个逻辑——我希望在BBWebService 中使用它——但没有覆盖AfNetworking 超类中的方法,我会在其中找到原始方法。

我查看了 AFNetworking 库中的 AFRequestSteralization.h 文件,它的协议如下:

 (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request
                               withParameters:(NSDictionary *)parameters
                                        error:(NSError *__autoreleasing *)error;

在注释中是这样写的:

返回一个将指定参数编码为副本的请求 原始请求。

@param request 原始请求。 @param 参数 要编码的参数。 @param error 发生的错误 尝试对请求参数进行编码。

@return 一个序列化的请求。

现在我是否会让 BBWebService 符合此协议,然后在 RCBaseData Store 中具有执行请求的方法,以不同的方式完成 - 对于GET / POST

第一个参数是我不确定的——如何为GET /POST request 创建一个NSURLRequest 对象?

一旦我提出请求 - 我如何让BBWebService捕获响应?

当我输入这个时,我在想... 做两个类,一个是响应,一个是请求?我想我几乎已经找到了我需要的解决方案——不过只需要扫清道路。

【问题讨论】:

【参考方案1】:

不要再这样做了。

没有子类了

您应该创建“自己的类”并使用 AFHTTPOperationManager

差不多了。

【讨论】:

我想将 AFHTTPSessionManager 用于所有网络内容,因为该应用程序仅适用于 ios7。 (可以使用NSURLSession)。如果在另一个类中的问题 - 我如何在 POST /GET 请求之间检测,而不在“Own Class”的方法中编写大量的 IF 语句? - 将使用 AFNetworking 的协议代替此工作吗?这里cocoadocs.org/docsets/AFNetworking/2.0.0/Protocols/… 和这个:cocoadocs.org/docsets/AFNetworking/2.0.0/Protocols/… 感谢您的帮助!

以上是关于AFNetworking 2.0 - 是不是使用子类?的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking 2.0:是不是可以将纯 json 放入 POST 请求的正文中?

如何使用 AFNetworking-2.0 执行 JSON 编码的 GET 请求?

使用 AFNetworking 2.0 签署 API 请求

AFNetworking 2.0 - 在监控进度的同时批量下载图像

如何在旧的 AFNetworking 中使用 AFNetworking 2.0+?

AfNetworking 2.0 发布问题