我在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];
Run Code Online (Sandbox Code Playgroud)
我看到AFHTTRequestOperationManager有GET:parameters:success:failure:可以设置参数的方法.但是这会立即启动请求,而不是让我有机会在其上设置重定向块.
我从AFNetworking 1.x中看到了一些示例代码AFHTTPClient,但是我不想回去!
我怎么能做我想做的事情?
该[AFHTTPRequestOperationManager GET...]方法AFHTTPRequestOperationManager.m只是创建AFHTTPRequestOperation对象并将其添加到operationQueue 的包装器.以此为例,您可以完成您想要做的事情.
这是在以下GET方法中创建请求的方式AFHTTPRequestOperationManager:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSMutableURLRequest *request = [manager.requestSerializer requestWithMethod:@"GET" URLString:[[NSURL URLWithString:URLString relativeToURL:manager.baseURL] absoluteString] parameters:parameters error:nil];
Run Code Online (Sandbox Code Playgroud)
其中urlString是表示url的NSString,参数是NSDictionary.
我相信其余的代码应该可以工作,但是以防万一,这里是如何在GET方法中完成的(同时添加了重定向块):
AFHTTPRequestOperation *ballotOperation = [self HTTPRequestOperationWithRequest:request success:success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"in completion");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"in failure");
}];
[ballotOperation setRedirectResponseBlock:^NSURLRequest *(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse) {
if (redirectResponse == nil) {
return request;
} else {
NSLog(@"in redirect, blocking");
[ballotOperation cancel];
return nil;
}
}];
[manager.operationQueue addOperation:ballotOperation];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3039 次 |
| 最近记录: |