2010-07-22 14 views
9

प्राप्त करता है कि मुझे निम्न विधि के अंदर यूआरएल कैसे मिलता है ??NSURLConnection यूआरएल

- (void)connectionDidFinishLoading:(NSURLConnection*)theConnection 

उत्तर

9

आप को theConnection.request.URL करने में सक्षम हो चाहिए, लेकिन आप नहीं कर सकते। परेशान, है ना?

सबसे आसान तरीका केवल यूआरएल (या पूरे NSURLRequest) को सहेजना है जिसे आप लोड कर रहे थे। यदि आप एकाधिक कनेक्शन का उपयोग कर रहे हैं, तो आप उन्हें एक शब्दकोश में स्टोर कर सकते हैं। ध्यान दें कि -[NSMutableDictionary setObject:forKey:]प्रतियां कुंजी, और NSURLConnections कॉपी करने योग्य नहीं हैं; वैकल्पिक हल के बजाय CFDictionarySetValue उपयोग करने के लिए है:

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

ठीक है ... धन्यवाद ... टी सी ... – Rony

3

आप इस

- (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]); 

} 

अधिक जानकारी के लिए आप वैन here पढ़ तरह URL प्राप्त कर सकते हैं।

4

बेशक उपर्युक्त उत्तर काम करते हैं, और मैं इसी तरह के समाधान की तलाश में हूं।

बस पाया कि एनएसएलओजी ([कनेक्शन विवरण]); प्रिंट कुछ की तरह:

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

तो यह स्ट्रिंग द्वारा [कनेक्शन विवरण] लौटे पार्स और कनेक्शन से यूआरएल मिलता है, हालांकि यह प्रकार है के लिए संभव है गंदे

+3

यह अब आईओएस 5 में काम नहीं करेगा; आप NSURLConnection के currentRequest का उपयोग –

+0

@MihaiDamian का उपयोग कर सकते हैं क्या आप आईओएस 5 के लिए एक जटिल चीज के बारे में जानते हैं। मेरा प्रोग्राम तब तक बढ़िया काम कर रहा था जब तक कि मैं आईओएस 5 में अपग्रेड नहीं किया गया था, अब NSRLConnection – MikeIsrael

+0

से यूआरएल प्राप्त करने के लिए एक और तरीका चाहिए ** कभी भी किसी वर्ग के लिए 'डिस्क्रिप्शन' के आउटपुट पर भरोसा न करें जब तक कि इसे विशेष रूप से किसी विशेष प्रारूप –

3

यहाँ मेरी सुझाव है

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

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

अरे वहाँ है कि मेरे लिए काम किया मिहाई डेमियन से एक टिप्पणी है:

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

चीयर्स

+0

का उपयोग करने के लिए प्रलेखित नहीं किया जाता है 4.3 –

+0

में काम नहीं करें मैक ओएस एक्स पर इसे केवल 10.8 में जोड़ा गया था, इसलिए यह 10.7 के लिए भी काम नहीं करेगा। क्योंकि आईओएस के लिए ओएसएक्स की तलाश करते समय मुझे इस प्रश्न पर रीडायरेक्ट किया गया, जिसके लिए यह सवाल पूछा जा रहा है। – PnotNP

+0

आईओएस 5.0 और बाद में – Daniel

0

स्विफ्ट 2.0 आईओएस 9 में आप इसे पसंद कर सकते हैं:

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