2010-07-22 11 views

risposta

9

È dovrebbe essere in grado di fare theConnection.request.URL, ma non si può. Fastidioso, non è vero?

Il modo più semplice è quello di salvare l'URL (o l'intera NSURLRequest) che si stava caricando. Se si utilizzano più connessioni, è possibile memorizzarle in un dizionario. Si noti che -[NSMutableDictionary setObject:forKey:]copia chiavi e NSURLConnections non sono copiabili; la soluzione è quella di utilizzare CFDictionarySetValue invece:

CFDictionarySetValue((CFMutableDictionaryRef)dict, connection, request); 
+0

ok ... grazie ... t c ... – Rony

3

È possibile ottenere URL come questo

- (void)connection:(NSURLConnection *)connection 

    didFailWithError:(NSError *)error 

{ 

    // release the connection, and the data object 

    [connection release]; 

    // receivedData is declared as a method instance elsewhere 

    [receivedData release]; 



    // inform the user 

    NSLog(@"Connection failed! Error - %@ %@", 

      [error localizedDescription], 

      [[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]); 

} 

Per ulteriori informazioni, si van leggere here.

4

Ovviamente le risposte di cui sopra funzionano e sto cercando una soluzione simile.

Appena rilevato che NSLog ([descrizione connessione]); stampe qualcosa di simile:

< NSURLConnection: 0x9129520, http://google.com>

Quindi è possibile analizzare la stringa restituita da [descrizione del collegamento], e ottenere l'URL dal collegamento, anche se è sorta di sporco.

+3

Questo non funzionerà più in iOS 5; puoi usare la richiesta corrente di NSURLConnection invece –

+0

@MihaiDamian conosci qualcosa di acquistabile per iOS5. Il mio programma funzionava alla grande fino a quando ho aggiornato iOS5 ora ho bisogno di un altro modo per ottenere l'url da NSURLConnection – MikeIsrael

+0

** Never ** contare sull'output di '-description' per una classe a meno che non sia specificamente documentato per utilizzare un particolare formato –

3

Ecco il mio suggerimento

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
    self.rssFeedConnection = nil; 

    NSLog(@"connectionDidFinishLoading url : %@ ", connection.originalRequest.URL); 
} 
21

Ehi c'è un commento da Mihai Damian che ha funzionato per me:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
NSURL *myURL = [[connection currentRequest] URL]; 

Acclamazioni

+0

non funziona in 4.3 –

+0

Su MAC OS X è stato aggiunto solo in 10.8 quindi non funzionerà nemmeno per 10.7. Aggiungendo il perché sono stato reindirizzato a questa domanda mentre cercavo OSX non per iOS per il quale è stata posta questa domanda. – PnotNP

+0

funziona con iOS 5.0 e successivi – Daniel

0

In Swift 2.0 iOS 9 si può fare come:

func connectionDidFinishDownloading(connection: NSURLConnection, destinationURL: NSURL) { 
     print(connection.currentRequest.URL!) 
    }