在 iOS 中创建这个
"{
"email":string,
"password":string
}"
JSON 请求正文,我正在传递从字符串创建的 nsdata
[email protected]&password=mypassword
到
setHTTPBody
的NSMutableURLRequest
方法。这很好用,我对此很满意。
但是如果我想创建这个怎么办:
"{
"post":
{
"title":string,
"room_id":int,
"content":string,
}
}"
JSON 请求正文?我尝试制作一些字符串组合来解决这个递归问题,但实际上并没有成功。我也检查了
NSMutableURLRequest
的方法,但我找不到相关的东西来解决这个问题。
编辑:
这会创建帖子,因为它应该没问题,但对于递归情况,我需要一个相当于字符串 [email protected]&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.example.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];
试试这个
NSDictionary *dict = @{@"post":@{@"title":string,@"room_id":int,@"content":string}};
NSData *body = [NSJSONSerialization dataWithJSONObject:dict
options:NSJSONWritingPrettyPrinted
error:&error];
这个想法是使用一些嵌套字典来描述你的 json 并序列化它们以使你的 jsonData 传递给请求。