AFNetworking:设置GET参数*和*拦截重定向

时间:2014-01-15 07:33:04

标签: ios afnetworking

我在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看到了一些示例代码,但我不想回去!

我该怎样做我想做的事?

1 个答案:

答案 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