1

コードサンプルと投稿を何日も読んでいますが、CoreDataオブジェクトからRESTfulWebサービスにJSONデータを投稿するための決定的な方法が見つかりませんでした。WebサービスからJSONをプルすることについてはたくさんのドキュメントがありますが、返送することについてはそれほど多くありません。誰かが私に良い例を示したり、それを行う方法についていくつかのコードを投稿したりできますか?Core Dataを使用していて、返送したいオブジェクトをディクショナリにマップしていますが、サービスに送信するためのコードがありません。

編集:

以下のコードは正しく表示され、エラーなしで実行されますが、0バイトのデータが返され、Webサービスがリクエストを受信して​​いないようです。JSONデータは見栄えがよく、URLは正しいので、WebサービスにアクセスしてJSONデータを取得できます。NSURLConnectionデリゲートメソッドも期待どおりに起動します。

以下に欠けているものはありますか?

- (void)SubmitSystems
{
    NSFetchRequest * allSystems = [[NSFetchRequest alloc] init];
    [allSystems setEntity:[NSEntityDescription entityForName:@"System" inManagedObjectContext:self.managedObjectContext]];
    NSError * error = nil;
    NSArray * systems = [self.managedObjectContext executeFetchRequest:allSystems error:&error];

    //error handling goes here
    //for (NSManagedObject * system in systems) {


    NSManagedObject *system = systems[2];

    NSString *entityString = @"System";
    NSString * serverString = [NSString stringWithFormat:@"%@%@", kWebServiceAddress, entityString];
    NSURL *url = [NSURL URLWithString:serverString];
    NSData* jsonData = [NSJSONSerialization dataWithJSONObject:[self jsonSystemDictionary:(System *)system] options:kNilOptions error:&error];

    //NSLog([[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]); //debug only

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy: NSURLRequestReloadIgnoringCacheData timeoutInterval: 30.f];

    [request setHTTPMethod:@"POST"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [request setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"];
    [request setHTTPBody: jsonData];

    self.urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 

//}
}
4

1 に答える 1

1

する必要がありますNSMutableURLRequest。これを使用すると、文字列を使用setHTTPMethodして渡すことができ、必要に応じて@"POST"、の属性を使用しNSManagedObjectURLHTTPBodyおよび/またはHTTPHeaderを設定できます。

于 2013-01-22T22:16:43.973 に答える