2012-05-03 9 views
1

私はPOSTデータを取るWebサービスにいくつかのデータを送りたいと思っています。POSTメッセージを非同期かつ確実に送信できるiOSライブラリがありますか?

ただし、インターネット接続が切断された場合は、データをキューに入れる必要があります。私。それをキャッシュし、次の利用可能な機会に送信します。

これに役立つiOSライブラリがありますか?

現時点では、ASIFormDataRequestを使用してこれを行う予定で、失敗した場合はNSUserDefaultsを使用してデータを保存します。

  • をNSUserDefaults
  • からデータを読み取る旗アップNSNotification
  • との接続NSOperationを使用して接続を探して:その後、私はバックグラウンドで処理を完了する必要があるだろうと仮定しますNSUserDefaults

からデータを削除

  • このデータを送る仕事の膨大な量のように見えるしていませんが、私はここで、車輪を再発明していますかこれは続行するための最良の方法ですか?

  • +0

    わかりませんが、RestKitがこれを実行しますか? https://github.com/RestKit/RestKit – Marco

    答えて

    0

    これはあなたが探しているものであってもよいし、GitHubのでAFNetworkingフレームワークを見てください、私は通常ASIFormDataRequestを使用して終了し、呼び出しのためにも、新しいスレッドを切り離すことNSThreadを使用https://github.com/AFNetworking/AFNetworking

    0

    。私はそれを行うの後に、それは私自身のデリゲート/プロトコルを呼び出します私はstartSynchronous代わりに呼ばれる理由

    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"some_url"]]; 
    [request setUseKeychainPersistence:YES]; 
    [request addRequestHeader:@"Content-Type" value:@"application/json"]; 
    for (NSString *key in dictionary) { 
        [request setPostValue:[dictionary objectForKey:key] forKey:key]; 
    } 
    [request startSynchronous]; 
    if([request responseStatusCode] == 200) 
    { 
        NSString *response = [NSString stringWithFormat:@"%@", [request responseString]]; 
        if ([self _isValidDelegateForSelector:@selector(requestSucceeded)]) { 
         [_delegate requestSucceeded]; 
        } 
        if ([self _isValidDelegateForSelector:@selector(itemAdded:)]) { 
         [_delegate itemAdded:[response JSONValue]]; 
        } 
    } 
    else { 
        if ([self _isValidDelegateForSelector:@selector(requestFailedWithError:)]) 
         NSLog(@"%@", [request debugDescription]); 
        [_delegate requestFailedWithError:[request error]]; 
    } 
    

    これは、すべてので、ウェブサービスへのすべての呼び出しが含まれている自分の「API」オブジェクトで行われており、とにかく私はこれを別のスレッドで処理するので、非同期です。

    関連する問題