0

我正在尝试处理 NSURLConnection 中的重定向。出于我的目的,我想记录重定向以供以后使用并继续下载页面的其余部分。为了测试,我尝试阅读http://www.google.com。这是处理重定向的代码:

- (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 request;
}

- (void) connection: (NSURLConnection *) theConnection didReceiveResponse: (NSURLResponse *) response {
    NSURL *url1 = [response URL];
    int foo = 0;
}

在这些方法中设置断点,我发现重定向被定向到

http://www.google.com/

具体来说, inconnection:willSendRequest:redirectResponse:设置url1http://www.google.com/,并且url2为 nil。在connection:didReceiveResponse:,url1也是http://www.google.com/

好的。添加斜线。但是,如果我随后使用带有斜杠的 URL 打开一个新的 NSURLConnection,我会得到同样的结果。

为什么重定向的 URL 与传递给 NSURLConnection 的原始 URL 相同?

4

1 回答 1

0

我相信您第一次看到该功能被击中并且还没有重定向。因此,如果您确实有重定向,您会在原始 url 上看到此命中,然后在重定向上再次命中。出于您的目的,您可能希望在请求开始时存储 URL,以便在尚未重定向时不执行任何操作。

于 2012-12-07T00:50:14.463 回答