0

ASIHTTPRequestを使用して自分のWebサイトを操作しています。基本的に、ASIHttpRequestsをキューに追加しています。インターネットに接続されていれば、すべて正常に機能します。ただし、リクエストが失敗した場合(つまり、インターネット接続がない場合)、操作は削除されると思います

インターネットに接続している場合にのみリクエストをキューに入れて実行する方法はありますか?インターネット接続がない場合は、リクエストをキューに入れ、接続が戻ったときに自動的に送信する必要があります。これが不可能な場合、私がここで試みていることを達成するための最良の方法は何ですか?

ありがとう!

これが私が今キューを設定している方法です:

NSURL *url = [NSURL URLWithString:@"http://www.tst.com.au/test.php?op=updateField"];

        ASIFormDataRequest *startHourRequest = [ASIFormDataRequest requestWithURL:url];

        NSDateFormatter *apiformatter = [[ [NSDateFormatter alloc] init] autorelease];
        [apiformatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        NSString *webdate = [apiformatter stringFromDate:date];
        [startHourRequest setDelegate:appDelegate];
        [startHourRequest setPostValue:webdate forKey:@"fieldvalue"];
        [startHourRequest setPostValue:[appDelegate shiftuid] forKey:@"uid"];
        [startHourRequest setPostValue:editAttribute forKey:@"fieldname"];
        [startHourRequest setDidFinishSelector:@selector(requestDone:)];
        [startHourRequest setDidFailSelector:@selector(requestWentWrong:)];
        [[appDelegate queue] addOperation:startHourRequest];
4

1 に答える 1

1

はい、Reachabilityクラスを使用すると非常に簡単にそれを行うことができます。

最初に、最初のリクエストを送信する前に、インターネットの到達可能性を確認します。

Reachability *reachability = [Reachability reachabilityForInternetConnection];    
NetworkStatus internetStatus = [reachability currentReachabilityStatus];
if (internetStatus != NotReachable) {
    //Do your request
}
else {
    //save your url to an array for use when the internet returns
}

ビューコントローラ内、またはインターネットの変更をリッスンするためにリクエストを送信する場所でこれを実行します

- (void)viewDidLoad

    [[NSNotificationCenter defaultCenter]
     addObserver:self 
     selector:@selector(networkStatusChanged:) 
     name:kReachabilityChangedNotification 
     object:nil];

    internetReachable = [Reachability reachabilityForInternetConnection];
    [internetReachable startNotifier];
}

- (void)networkStatusChanged:(NSNotification *)notice {
    NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
    if (internetStatus != NotReachable && [yourUrlsToSend count] > 0) {
        //send off your requests now that you have internet

    }
}

これはすべて、ここで見つけることができるアップルからのreqchabilityファイルを含めることに依存します:ここにリンクの説明を入力してください。お役に立てば幸い

于 2012-06-10T15:04:49.433 に答える