2012-12-07 24 views
1

我正在爲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繼續處理文件嘗試重定向後?

回答

0

HTTP重定向響應大多數時間是當前連接的結束。如果您的第一個連接以重定向結束,並且您拒絕處理重定向,則無需執行任何操作。

相關問題