2013-07-09 43 views
0

我已經寫了一個應用程序,下載並從HTML文件中擦除數據。該應用程序已運行良好數月,但最後幾天它已停止。NSURL已停止在應用程序工作

這裏是代碼...

NSString* urlString = [@"http://easytide.ukho.gov.uk/EASYTIDE/EasyTide/ShowPrediction.aspx?PortID=" stringByAppendingString:portCode]; 
urlString = [urlString stringByAppendingString:@"&PredictionLength=7"]; 
NSURL* easyTidesUrl = [NSURL URLWithString:urlString]; 
NSData* easyTidesHtmlData = [NSData dataWithContentsOfURL:easyTidesUrl]; 

當我檢查NSURL對象的URL沒有設置正確(沒有與串中的錯誤)和NSURL對象顯示爲。我知道過去有人問過類似的問題(我曾嘗試過這些解決方案,但在這種情況下他們不起作用),但看起來奇怪的是,這款應用程序運行良好,現在已被破解而無需執行任何操作!


下面是一些更多的代碼...基本上已經停止工作是函數的第一部分中的一部分......

+(void)getTides:(NSMutableArray *)tidalDateArray withPortCode:(NSString*)portCode 
{ 
    NSString *parameter = [portCode stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    NSString *urlString = [NSString stringWithFormat:@"http://easytide.ukho.gov.uk/EASYTIDE/EasyTide/ShowPrediction.aspx?PortID=%@&PredictionLength=7", parameter]; 
    NSURL *easyTidesUrl = [NSURL URLWithString:urlString]; 
    NSData *easyTidesHtmlData = [NSData dataWithContentsOfURL:easyTidesUrl]; 

    TFHpple* tidesParser = [TFHpple hppleWithHTMLData:easyTidesHtmlData]; 

    NSString* easyTidesXPathQueryString = @"//div[@class='HWLWPanel']/table/tr/th[@class='HWLWTableHeaderCell']"; 
    NSArray* tideDateNodes = [tidesParser searchWithXPathQuery:easyTidesXPathQueryString]; 

    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:[NSDate date]]; 

    NSCalendar *gregorian = [[NSCalendar alloc] 
          initWithCalendarIdentifier:NSGregorianCalendar]; 
+0

你得到NSURL * easyTidesUrl零? –

+0

不,NSURL對象有一個內存地址等,所以我認爲它被初始化......問題似乎與nsurl.urlString – HillInHarwich

+0

我試着上述地址,並被重定向到一個錯誤頁面...如果你有沒有修改應用程序,並且無故斷開,那麼問題可能在其他地方。我懷疑網站或主機服務器可能有變化。 – Rick

回答

0

有可能是在portCode變量一些非法包機,像一個空間:

NSString *parameter = [portCode stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSString *urlString = [NSString stringWithFormat:@"http://easytide.ukho.gov.uk/EASYTIDE/EasyTide/ShowPrediction.aspx?PortID=%@&PredictionLength=7", parameter]; 
NSURL *easyTidesUrl = [NSURL URLWithString:urlString]; 
NSData *easyTidesHtmlData = [NSData dataWithContentsOfURL:easyTidesUrl]; 
+0

該網址沒有空格,但urlString對象中的實際字符串顯示爲未知類...該網址爲:http://www.ukho.gov.uk/easytide/EasyTide/ShowPrediction.aspx?PortID = 0131&PredictionLength = 7 – HillInHarwich

+0

您是否試過我的代碼,應該在您的'startViewController'變量中過濾掉一些不受支持的章程。 – rckoenes

+0

我曾嘗試過...從portCode創建更安全的參數變量並沒有什麼區別...... – HillInHarwich

1

Easytide似乎下來,所以可能不是一個API問題!

0

這個問題看起來像是一個非常簡單的問題...... URL本身是錯誤的 - 它們是否改變了它,或者它是否在代碼中發生了變化,我不知道...謝謝你的所有幫助,雖然和代碼的改進...