2010-06-12 39 views
10

我有這樣的呼籲stringwithcontentsofurl:超時stringwithcontentsofurl

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

我怎麼能做一個簡單的超時? 我不想使用線程或操作隊列(url的內容大約爲100個字符),我只是不想在連接速度慢時等待太久。

回答

9

在這種情況下,您最好使用NSURLConnection類方法+sendSynchronousRequest:returningResponse:error:;它會返回一個數據對象,您可以初始化您的字符串(使用-initWithData:encoding:)。您可以通過使用-initWithURL:cachePolicy:timeoutInterval:方法創建NSURLRequest來指定超時,然後將該請求作爲+sendSynchronousRequest:returningResponse:error:的第一個參數傳遞。

+0

偉大的!,那只是因爲我想象它!謝謝! – sergiobuj 2010-06-13 02:50:42

+1

這個問題的唯一問題是你沒有得到'+ stringWithContentsOfURL:usedEncoding:error:'做的編碼的內建猜測,所以你必須推出自己的編碼。 – 2014-05-14 17:13:43

17

這裏有一個關於它我採取:

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

太棒了!工程100% – 2013-01-21 10:09:13