gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 04:35:09 31 4
gpt4 key购买 nike

我在 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:,您可以在其中设置参数。但这会立即启动请求,而不是让我有机会在其上设置重定向 block 。

我看到一些示例代码来自 AFNetworking 1.x 使用 AFHTTPClient,但我不想回去!

我怎样才能做我想做的事?

最佳答案

AFHTTPRequestOperationManager.m 中的[AFHTTPRequestOperationManager GET...] 方法只是创建一个AFHTTPRequestOperation 对象并将其添加到操作队列。以此为例,您可以完成您想要做的事情。

这是在 AFHTTPRequestOperationManagerGET 方法中创建请求的方式:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSMutableURLRequest *request = [manager.requestSerializer requestWithMethod:@"GET" URLString:[[NSURL URLWithString:URLString relativeToURL:manager.baseURL] absoluteString] parameters:parameters error:nil];

其中 urlString 是一个代表 url 的 NSString,参数是一个 NSDictionary。

我相信您的其余代码应该可以工作,但为了以防万一,以下是在 GET 方法中的完成方式(同时添加了重定向 block ):

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];

关于ios - AFNetworking:设置 GET 参数 * 和 * 拦截重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21131488/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com