AFNetworking 将重定向请求从 GET 更改为 POST

Posted

技术标签:

【中文标题】AFNetworking 将重定向请求从 GET 更改为 POST【英文标题】:AFNetworking change redirect request from GET to POST 【发布时间】:2015-03-18 19:58:49 【问题描述】:

所以,我正在从使用 ASI 库切换到 AFNetworking,并且遇到了重定向请求问题。这是我正在使用的代码:

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:originalRequest];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) 
    debugLog(@"SM Success, Redirect URL: %@",[[[operation response] URL] absoluteString]);
 failure:^(AFHTTPRequestOperation *operation, NSError *error) 
    debugLog(@"SM Fail: %@", error);
];

[operation setRedirectResponseBlock:^NSURLRequest *(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse) 

    if (redirectResponse) 
        debugLog(@"REDIRECT URL: @%", [request URL]);
        NSMutableURLRequest *r = [originalRequest mutableCopy];
        [r setURL: [request URL]];
        return r;
     else 
        debugLog(@"Redirecting to : %@", [request URL]);
        return request;
            
];

我想做的是将重定向请求从 GET 更改为 POST。在 ASI 中,我明确禁止了所有重定向,一旦收到 302 状态,我将创建一个新请求并将其作为 POST 发送。我应该对 AFNetworking 做同样的事情吗?

【问题讨论】:

【参考方案1】:

当您复制原始请求时,您使用的是相同的 HTTP 方法,如果您想从 GET 更改为 POST,您应该这样做:

NSMutableURLRequest *r = [originalRequest mutableCopy];
[r setHTTPMethod:@"POST"];
[r setURL: [request URL]];
return r;

【讨论】:

别担心,这种事经常发生在我身上!

以上是关于AFNetworking 将重定向请求从 GET 更改为 POST的主要内容,如果未能解决你的问题,请参考以下文章

使用 URL 中的请求参数从页面重定向

AFNetworking 2.0 参数字典不适用于 GET 请求

来自 GET 请求的 AFNetworking 3.0 404 响应

AFNetworking网络请求的get和post步骤

AFNetworking 3.0 GET 请求在 iOS 中保存到类中

如何使用 AFNetworking-2.0 执行 JSON 编码的 GET 请求?