AFHTTPRequestOperation 依赖
AFHTTPRequestOperation dependency
我在使用 AFNetworking
进行服务调用的应用程序中有以下情况:
- 我调用了一项特殊服务,它会为我生成令牌
- 我调用我想要的服务,将此令牌作为参数发送
- 我调用了另一个特殊服务来销毁令牌。
每次向服务器发出请求时,我都必须执行这 3 个步骤。我不能改变服务器的工作方式,所以我必须遵守这个要求。我也不能对多个请求使用同一个令牌。
我的问题如下 - 我尝试使用 AFHTTPRequestOperation
s:
来完成这个
NSError *serializationError = nil;
NSMutableURLRequest *request = [self.manager.requestSerializer requestWithMethod:@"POST" URLString:[[NSURL URLWithString:@"serviceName.json" relativeToURL:self.manager.baseURL] absoluteString] parameters:@{ @"token": token } error:&serializationError];
AFHTTPRequestOperation *myRequestOperation = [self.manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) {
// Success login
} failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError * _Nonnull error) {
// Failure logic
}];
[myRequestOperation addDependency:createTokenRequestOperation];
其中 self.manager
是 AFHTTPRequestOperationManager
的实例,但是有一个问题 - 我没有 token
.
的值
因为 myRequestOperation
应该只在上面列表中的第 1 点之后执行,所以我让它依赖于将获得令牌的操作。
现在我的困惑来了 - 当我需要将它们都实例化以使一个依赖于另一个时,我如何创建一个使用前一个操作的参数的操作?
由于找不到适合我的解决方案,我最终使用了 PromiseKit,它允许我像这样链接异步调用:
[NSURLConnection promise:rq1].then(^(id data1){
return [NSURLConnection promise:rq2];
}).then(^(id data2){
return [NSURLConnection promise:rq3];
}).then(^(id data3){
// Work with the data returned from rq3
});
我在使用 AFNetworking
进行服务调用的应用程序中有以下情况:
- 我调用了一项特殊服务,它会为我生成令牌
- 我调用我想要的服务,将此令牌作为参数发送
- 我调用了另一个特殊服务来销毁令牌。
每次向服务器发出请求时,我都必须执行这 3 个步骤。我不能改变服务器的工作方式,所以我必须遵守这个要求。我也不能对多个请求使用同一个令牌。
我的问题如下 - 我尝试使用 AFHTTPRequestOperation
s:
NSError *serializationError = nil;
NSMutableURLRequest *request = [self.manager.requestSerializer requestWithMethod:@"POST" URLString:[[NSURL URLWithString:@"serviceName.json" relativeToURL:self.manager.baseURL] absoluteString] parameters:@{ @"token": token } error:&serializationError];
AFHTTPRequestOperation *myRequestOperation = [self.manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) {
// Success login
} failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError * _Nonnull error) {
// Failure logic
}];
[myRequestOperation addDependency:createTokenRequestOperation];
其中 self.manager
是 AFHTTPRequestOperationManager
的实例,但是有一个问题 - 我没有 token
.
因为 myRequestOperation
应该只在上面列表中的第 1 点之后执行,所以我让它依赖于将获得令牌的操作。
现在我的困惑来了 - 当我需要将它们都实例化以使一个依赖于另一个时,我如何创建一个使用前一个操作的参数的操作?
由于找不到适合我的解决方案,我最终使用了 PromiseKit,它允许我像这样链接异步调用:
[NSURLConnection promise:rq1].then(^(id data1){
return [NSURLConnection promise:rq2];
}).then(^(id data2){
return [NSURLConnection promise:rq3];
}).then(^(id data3){
// Work with the data returned from rq3
});