我在iOS项目中使用AFNetworking 2.0,我正在尝试使用一些参数构建GET请求,和拦截重定向。
我看到方法-[AFHTTPRequestOperation setRedirectResponseBlock]
,我正用它来抓取重定向并对它们做些什么。但我没有看到如何在该操作上设置请求参数。这是看起来像:
AFHTTPRequestOperation *ballotOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest];
[ballotOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"in completion");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"in error");
}];
[ballotOperation setRedirectResponseBlock:^NSURLRequest *(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse) {
if (redirectResponse == nil) {
return request;
} else {
NSLog(@"in redirect, blocking");
[ballotOperation cancel];
return nil;
}
}];
[[AFHTTPRequestOperationManager manager].operationQueue addOperation:ballotOperation];
我看到AFHTTRequestOperationManager
有方法GET:parameters:success:failure:
,您可以在其中设置参数。但是这会立即启动请求,而不是让我有机会在其上设置重定向块。
我使用AFHTTPClient
从AFNetworking 1.x看到了一些示例代码,但我不想回去!
我该怎样做我想做的事?
答案 0 :(得分:6)
[AFHTTPRequestOperationManager GET...]
中的AFHTTPRequestOperationManager.m
方法只是创建AFHTTPRequestOperation
对象并将其添加到operationQueue的包装器。以此为例,您可以完成您想要做的事情。
这是在GET
的{{1}}方法中创建请求的方式:
AFHTTPRequestOperationManager
其中AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSMutableURLRequest *request = [manager.requestSerializer requestWithMethod:@"GET" URLString:[[NSURL URLWithString:URLString relativeToURL:manager.baseURL] absoluteString] parameters:parameters error:nil];
是表示url的NSString,参数是NSDictionary。
我相信其余的代码应该可以运行,但为了以防万一,以下是urlString
方法中的方法(同时添加了重定向块):
GET