2012-03-22 33 views
1

私のインターネット接続をオフにして実行すると、コンソールログに「接続に失敗しました」と表示されることが予想されました。誰も私がなぜそうでないのか説明できますか?ありがとう。インターネット接続でNSURLConnectionエラーが発生していませんか?

NSString *urlString = [NSString stringWithFormat:@"http://www.myurl.com/RSS/feed.xml"]; 

NSURL *serviceURL = [NSURL URLWithString:urlString]; 

//Create the request 
NSURLRequest *request = [NSURLRequest requestWithURL:serviceURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30]; 

//Create the connection and send the request 
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 


//Make sure the connection is good 
if (connection) { 
    //instantiate the responseData structure to store the response 
    self.responseData = [NSMutableData data]; 

} 
else { 
    NSLog(@"Connection failed"); 
} 

答えて

1

あなたは実際にリクエストをまだ試みていません。 if (connection)要求が成功したかどうかはテストされず、接続を表すオブジェクトを作成できたかどうかだけがテストされます。依頼をするには、依然としてそのメソッドの1つを呼び出す必要があります。詳細は、the documentationを参照してください。

+0

うーんそれが成功すれば?私は([NSURLConnection canHandleRequest:request])を試しましたが、どちらも動作していないようです。 – sayguh

+0

非同期要求を送信していると仮定すると、デリゲートメソッド 'connection:didFailWithError:'を実装する必要があります。 – Jim

+0

情報Jimに感謝します。 re:以下のコメント.. didReceiveDataはWiFiをオフにしても動作するようです。だから私はキャッシングについての意味です。ページが404を返してもデータを受け取るようになりました。あなたが探していたファイル全体が返されたことを確認するのが一般的な方法であることを教えてください。 – sayguh

1

あなたは、接続自体が失敗したかどうかをチェックし、いない接続オブジェクトの作成、デリゲートを使用し、そのようにしたいとしている:あなたは、私がテストすることができますどのように私に言うことができる。..

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{ 
     NSLog("Oh noes D="); 
} 
+0

私はこのデリゲートメソッドをあなたが示唆したように実装しました...しかし、それはまだインターネットをオフにして発射していませんか? – sayguh

+0

まあ私はあなたが実際にデリゲートを自己に設定しているというコードを見ているので、その関数が起動しなければ、問題の内容を伝えられませんでした。他のデリゲートメソッドも実装していますか? (didFinishLoadingとdidRecieveData)3人のうちの1人が何を起しても大丈夫です! –

+0

WEIRD!私はあなたのようにdidReceiveDataを実装しました。私はアプリを実行し、それが発生します。その後、私はWiFiをオフにして(そして、私はどのウェブサイトにもアクセスすることができないことを確認する)、再びアプリケーションを実行し、それはまだ起動する?? *混乱している* – sayguh

関連する問題