2009-09-15 11 views
62

Bu NSURLConnection'u delege ile kullanıyorum.NSURLConnection zaman aşımı?

nsconnection = [[NSURLConnection alloc] initWithRequest:request 
    delegate:self startImmediately:YES]; 

Web sitesi hiç bir yanıt vermiyor. Hiçbir şey, sadece boş sayfa ile tarayıcıda döner, hata yok. Temsilcilerimde başarısızlığı hallediyorum, ancak site yanıt vermediğinde delegeler çağrı yapılmıyor. Bağlantıyı nasıl zaman aşacağınız hakkında bir fikrin var mı?

cevap

127

NSURLRequest nesnesinde bir zaman aşımı belirtebilirsiniz. Bunu yapmanın bir yolu, requestWithURL:cachePolicy:timeoutInterval: yöntemiyle oluşturmaktır. (Bu bölüm hakkında endişelenmek istemiyorsanız, varsayılan NSURLRequestUseProtocolCachePolicy cachePolicy parametresini kullanabilirsiniz.) Zaman aşımı, temel olarak iPhone SDK'sındaki tüm zaman aralıklarında olduğu gibi saniyeler içinde bir kayan nokta değeridir.

Ayrıca, NSURLConnection'un temsilcisinin ayarlandığından ve connection:didFailWithError: yöntemine yanıt verdiğinden emin olun. Bağlantı, bağlantı tamamlandığında bu yöntemi veya connectionDidFinishLoading: her zaman çağırır.

+0

temsilci çalışır ve bir hata web sunucusu tarafından gönderildiği zaman tepki vermez. Bu durumda web sunucusu hiçbir şey göndermez. Sadece döner. Zaman aşımı eklemek için istek yöntemini yapılandıracağım. Teşekkürler – Jordan

+0

Sadece kontrol. Zaman aşımı için zaten yapılandırılmış. – Jordan

+0

NSURLStuff'a bir alternatif denemek isterseniz, bir arkadaşım kullanımı kolay olan ASIHTTPRequest'i (google it) önerdi ve zaman aşımı işlevi dahil oldukça kolay görünüyor. – Tyler

24

Düzeltme: Bu yanıt artık geçersiz, ancak yanıtlama tarihinde doğruydu.

Bu iş parçacığının eski olduğunu biliyorum, ancak bu soruna da girdim. Bu, uygulamanın hizmet verdiği iç ağın dışında test edildiğinde gerçekleşti. Servis sonunda zaman aşımına uğrayacak, ancak Apple, zaman aşımına uğramadan önce 240 saniyelik bir süre (4 dakika) sürüyor. Konuyla ilgili daha fazla bilgi için bu konuya bakın.

NSMutableURLRequest not obeying my timeoutInterval

+0

Uygulamamda NSCredentials ekleyerek bunu düzeltdiğime inanıyorum. Yanıt vermeme, sağlanmadığım sunucuya kimlik doğrulama talebinde bulundu. – Jordan

+3

Bu yanlış bilgi! Http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURLRequest_Class/Reference/Reference.html%23//apple_ref/occ/cl/NSURLRequest varsayılan zaman aşımı aralığına göre 60 saniye. – stigi

+4

@stigi, ezekielDFM iOS hakkında konuşurken, Mac OS için materyal referansı veriyor gibi görünüyor. – leukosaima