我正在为NSURLConnection实现重定向处理程序。出于我的目的,我实际上并不想进行重定向,我想加载整个页面并记住重定向以供以后使用。在NSURLConnectionDataDelegate连接的文档中:willSendRequest:redirectResponse:方法,我发现:
根据重定向响应使用的实际URL请求。 代理可以返回未修改的请求以允许重定向, 返回一个新请求,或返回nil拒绝重定向和 继续处理连接。
我试过这段代码:
- (NSURLRequest *) connection: (NSURLConnection *) connection
willSendRequest: (NSURLRequest *) request
redirectResponse: (NSURLResponse *) redirectResponse
{
NSURL *url1 = [request URL];
NSURL *url2 = [redirectResponse URL];
if ([request URL] != nil)
self.redirect = [request URL];
return nil;
}
- (void) connection: (NSURLConnection *) theConnection didReceiveResponse: (NSURLResponse *) response {
NSURL *url1 = [response URL];
int foo = 0;
}
该程序从未调用connection:didReceiveData:
,connection:didFailWithError:
或connectionDidFinishLoading:
。返回request
而不是nil
,程序正常加载页面。 (重定向的网址是原始网址,但是another question。如果它们相关,请杀死两只鸟并回答那个。)
在重定向尝试后是否还需要其他东西来正确允许NSURLConnection继续处理文件?
答案 0 :(得分:0)
HTTP重定向响应是大多数时间当前连接的结束。如果您的第一个连接以重定向结束,并且您拒绝处理重定向,则无需执行任何操作。