我正在爲NSURLConnection實現重定向處理程序。出於我的目的,我實際上並不想做重定向,我想加載整個頁面並記住重定向以供以後使用。在NSURLConnectionDataDelegate的連接文檔:willSendRequest:redirectResponse:方法中,我找到這個:爲什麼NSURLConnection在連接中返回nil時會停止發送數據: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
,程序正常加載頁面。 (重定向的URL是原始URL,但是這是another question。如果它們相關,請殺死兩隻鳥並回答該問題。)
正確地允許NSURLConnection繼續處理文件嘗試重定向後?