1

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 服务 - 所以这种方法会增长......很多。

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

我面临的问题:

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

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

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

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

在注释中是这样说的:

返回具有指定参数的请求,该参数编码为原始请求的副本。

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

@return 一个序列化的请求。

现在我会让 BBWebService 符合这个协议,然后在 RCBaseData Store 中拥有执行请求的方法,以不同的方式完成 - 因为GET / POST

第一个论点是我不确定的——如何NSURLRequest为 a 创建一个对象GET /POST request

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

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

4

1 回答 1

2

不要再那样做了。

没有子类了

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

差不多就是这样。

于 2013-11-01T08:09:46.273 回答