2011-12-14 55 views
1

如果連接存在,通過對某個返回YES的方法使用NSURLConnection調用來測試Web服務的可到達性,這是否是不好的做法?以這種方式測試可達性是不好的做法嗎?

我看着其他的方式做它,但無法弄清楚測試特定的服務是否可用,而不是WiFI或類似的。

回答

3

SCNetworkReachability(請參閱Apple's Reachability sample code)但只檢查服務器是否應該可達,它不會告訴您服務是否實際可用(正在運行)。爲此你必須嘗試使用​​它。只要確保不是在主線程上使用sendSynchronousRequest:returningResponse:error:,因爲它是同步的,並會阻塞線程直到完成。如果你在主線程上這樣做,UI將凍結,直到服務已響應或超時。因此,要麼使用異步方法NSURLConnection(「推薦」方式),要麼在單獨的線程上使用同步方法。前者在我看來更簡單/更好。

+0

有趣!雖然它實際上被稱爲'SCNetworkReachability' - 只是爲了更好的可搜索性而修復名稱.. ;-) – Jay 2011-12-14 15:24:53

2

這是只有方式做到可靠。雖然服務的狀態可能會在你進行測試和試圖獲取真實數據之間發生變化,所以你必須編寫你真正的連接,就好像你還沒有檢查過一樣,那麼爲什麼還要單獨檢查呢?

相關問題