如下json格式为:
"Method" : "ClientLogin",
"RunnerIP" : "",
"Detail" : [
{
"UserName" : "lanxijin",
"Pwd" : "ac59075b964b0715"
}
],
"WebSite" : "community",
"RunnerUserID" : "0",
"Class" : "Login"
讲这和一段json格式post服务器。首先我们得到的值是字典类型,需要将字典类型转换成json
如下方法转换:
-(NSString*)DataTOjsonString:(id)object
{
NSString *jsonString = nil;
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:object
options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
error:&error];
if (! jsonData) {
NSLog(@"Got an error: %@", error);
} else {
jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
return jsonString;
}
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept" ];
[manager.requestSerializer setValue:@"application/json; charset=gb2312" forHTTPHeaderField:@"Content-Type" ];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json",@"text/html", @"text/plain",nil];
/**
* parameters最外层参数类型是一个字典,字典里面接受一接受一个数组"detailArr"(其中detailArr中添加一个字典对象)
*/
NSDictionary *detailDic = @{@"UserName":@"lanxijin",@"Pwd":@"ac59075b964b0715"};
NSMutableArray *detailArr = [[NSMutableArray alloc]init];
[detailArr addObject:detailDic];
NSDictionary *parameters = @{@"Class":@"Login",@"Method":@"ClientLogin",@"WebSite":@"community",@"RunnerUserID":@"0",@"RunnerIP":@"",@"Detail":detailArr};
//讲字典类型转换成json格式的数据,然后讲这个json字符串作为字典参数的value传到服务器
NSString *jsonStr = [self DataTOjsonString:parameters];
NSLog(@"jsonStr:%@",jsonStr);
NSDictionary *params = @{@"ios":(NSString *)jsonStr}; //服务器最终接受到的对象,是一个字典,key为“ios”,value为“json字符串”
NSString *url=@"http://XXXXXXXXX";
[manager POST:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
//服务器默认返回的是一个NSData类型,需要将返回的这个类型转换成你所需要的类型,一般是id
id result = [responseObject JSONValue];
NSLog(@"result:%@",result); //最后得到服务器返回的正确数据
//测试服务器数据是否正常
NSArray *arr = [result objectForKey:@"Detail"];
for (int i = 0; i < arr.count; i ++) {
NSDictionary *dic = [arr objectAtIndex:i];
NSString *mobile = [dic objectForKey:@"mobile"];
NSLog(@"mobiles:%@",mobile);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
最后输出结果如下:
result:{
Class = Login;
Detail = (
{
address = dsggds;
area = "";
city = "";
createtime = "2015/11/10 16:20:16";
id = 2;
isbbs = 0;
ishotnews = 0;
ismessagepush = 0;
isshow = 888;
landdate = "2015/11/16 0:56:07";
landnum = 89;
lasttime = "2015/11/10 16:20:16";
mobile = 13819118514;
nickname = lanxijin;
password = ac59075b964b0715;
picture = "";
picturedomain = "";
province = "";
success = 2;
totalscore = "";
username = lanxijin;
}
);
Method = ClientLogin;
}