我使用SBJson從URL中檢索數據。如何在下載前檢查我是否可以訪問URL。我想檢查一下,如果沒有網絡連接,應用程序崩潰。如何檢查網絡訪問SBJson URL
這裏是我的代碼
id response = [self objectWithUrl:[NSURL URLWithString:@"http://myurl.com/Service.svc/GetId"]];
*我使用stringWithUrl和objectWithUrl方法下載JSON。
我使用SBJson從URL中檢索數據。如何在下載前檢查我是否可以訪問URL。我想檢查一下,如果沒有網絡連接,應用程序崩潰。如何檢查網絡訪問SBJson URL
這裏是我的代碼
id response = [self objectWithUrl:[NSURL URLWithString:@"http://myurl.com/Service.svc/GetId"]];
*我使用stringWithUrl和objectWithUrl方法下載JSON。
使用可達API,並使用該網址作爲您的主機名要測試
http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html
//reachabilityWithHostName- Use to check the reachability of a particular host name.
+ (Reachability*) reachabilityWithHostName: (NSString*) hostName;
不要使用可達主線程上,以檢測是否有網絡連接。它不起作用,可以鎖定30秒或更長時間,導致您的應用程序被終止。
相反,您應該嘗試使用NSURLConnection下載數據 - 這將在需要時啓動無線電。如果發生錯誤,您將收到回電。
所有的網絡連接 - 包括域名查找 - 應該在輔助線程上或異步或至少是非阻塞的。對於NSURL,請使用NSURLConnection的異步回調。
您的應用程序可能會崩潰,因爲您正在從主線程進行網絡調用並鎖定超過30秒,因此係統監視程序計時器會殺死您。查看Xcode中的崩潰日誌應該驗證。否則,你可能只是沒有正確處理錯誤條件。
沒錯,但Reachability示例演示了SCNetworkReachability API的異步使用。 Reachability示例中的ReadMe.txt警告您可能面臨的問題。 – bandejapaisa
謝謝你的線索。這確實有幫助! – HardCode