0

iOSでこれを作成する

"{
"email":string, 
"password":string
}"

json リクエスト本文、文字列から作成した nsdata を渡しています

email=myname@domain.com&password=mypassword

NSMutableURLRequest の setHTTPBody メソッドに追加します。これで問題なく動作します。

しかし、これを作成したい場合はどうすればよいですか

"{
"post":
       {
        "title":string,
        "room_id":int,
        "content":string,
       }
}"

json リクエストボディ? この再帰を解決するためにいくつかの文字列の組み合わせを作成しようとしましたが、実際にはうまくいきませんでした。NSMutableURLRequest のメソッドも確認しましたが、これを解決するために関連するものを見つけることができませんでした。

編集:

これで問題ないはずの投稿が作成されますが、再帰的な場合には文字列 email=myname@domain.com&password=mypassword に相当するものが必要です。本来あるべきデータを送信すると、機能しません。提供した文字列として送信すると機能します。

NSString *usertoken =  [appDelegate token];
NSString *posttopic = @"111testtopic";
NSString *postbody =  @"111testbody";

NSDictionary *dict = @{@"post":@{@"title":posttopic,@"room_id":@"246",@"content":postbody}};
NSData *body = [NSJSONSerialization dataWithJSONObject:dict
                                               options:NSJSONWritingPrettyPrinted
                                                 error:nil];



NSString *postLength = [NSString stringWithFormat:@"%d", [body length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];

//send the post
NSString *urlstring = [NSString stringWithFormat:@"http://mydomain.com/posts.json?auth_token=%@", usertoken];
[request setURL:[NSURL URLWithString:urlstring]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded;charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:body];



NSURLResponse *response;
NSData *POSTReply = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
4

1 に答える 1

1

これを試して

NSDictionary *dict = @{@"post":@{@"title":string,@"room_id":int,@"content":string}};
NSData *body = [NSJSONSerialization dataWithJSONObject:dict 
                                               options:NSJSONWritingPrettyPrinted 
                                                 error:&error];

アイデアは、いくつかのネストされた辞書を使用してjsonを記述し、それらをシリアル化して、jsonDataをリクエストに渡すことです。

于 2013-02-06T19:22:48.023 に答える