Ios 为什么NSURLConnection重定向到自身?

Ios 为什么NSURLConnection重定向到自身?,ios,nsurlconnection,Ios,Nsurlconnection,我正在尝试处理NSURLConnection中的重定向。出于我的目的,我想记录重定向供以后使用,并继续下载页面的其余部分。为了测试,我试着阅读。以下是处理重定向的代码: - (NSURLRequest *) connection: (NSURLConnection *) connection willSendRequest: (NSURLRequest *) request redirectResponse: (NSURLResponse *

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

- (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;
}
在这些方法中设置断点,我发现重定向被定向到

具体来说,在
connection:willSendRequest:redirectResponse:
中,
url1
设置为,而
url2
设置为零。在
连接:didReceiverResponse:
中,
url1
也是

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


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

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

我想到了这一点,但该方法从未被第二次调用。(我在这些方法中设置的断点从未被第二次击中。)