2010-06-12 7 views
10

Ich habe diesen Aufruf stringwithcontentsofurl:Timeout stringwithcontentsofurl

[NSString stringWithContentsOfURL:url usedEncoding:nil error:nil]; 

Wie kann ich geben, dass eine einfache Timeout? Ich möchte nicht Threads oder Operationswarteschlangen verwenden (der Inhalt der URL ist etwa 100 Zeichen), ich möchte nur nicht zu lange warten, wenn die Verbindung langsam ist.

Antwort

9

In diesem Fall ist es am besten, wenn Sie die Klassenmethode NSURLConnection+sendSynchronousRequest:returningResponse:error: verwenden; Es gibt ein Datenobjekt zurück, mit dem Sie Ihre Zeichenfolge initialisieren können (unter Verwendung von -initWithData:encoding:). Sie können ein Zeitlimit angeben, indem Sie mit der Methode -initWithURL:cachePolicy:timeoutInterval: eine NSURLRequest erstellen und diese Anforderung dann als ersten Parameter von +sendSynchronousRequest:returningResponse:error: übergeben.

+0

Great !!, das war so, wie ich es mir vorgestellt !! Vielen Dank! – sergiobuj

+1

Das einzige Problem mit diesem ist, dass Sie nicht das eingebaute Raten des Kodierens bekommen, das Sie mit '+ stringWithContentsOfURL: usedEncoding: error:' tun, also würden Sie Ihr eigenes rollen müssen. –

17

Hier ist mein nehmen auf sie:

NSString* link = @"http://example.com"; 
NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:link] cachePolicy:0 timeoutInterval:5]; 
NSURLResponse* response=nil; 
NSError* error=nil; 
NSData* data=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
NSString* stringFromServer = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; 
+1

Super! Funktioniert zu 100% –