在POST请求网络中发送JSON对象,iOS
我正在使用在POST请求网络中发送JSON对象,iOS,ios,objective-c,afnetworking,Ios,Objective C,Afnetworking,我正在使用AFNetworking将数据发布到web上。我拥有的信息是URI,它是baseURL/post\u user\u info,它们希望input作为包含每个名称-值对的JSON对象。在下面编写的代码中,我在字典中设置了名称-值对。我的问题是如何使它成为json并将其作为输入值发送 NSString *string = [NSString stringWithFormat:@"%@?post_user_info",BaseURLString]; NSString *escapedPath
AFNetworking
将数据发布到web上。我拥有的信息是URI
,它是baseURL/post\u user\u info
,它们希望input
作为包含每个名称-值对的JSON对象。在下面编写的代码中,我在字典中设置了名称-值对。我的问题是如何使它成为json并将其作为输入值发送
NSString *string = [NSString stringWithFormat:@"%@?post_user_info",BaseURLString];
NSString *escapedPath = [string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSDictionary *params = @{@"input_1": @"hello world",
@"input_2": @"my@you.com",
@"input_3": @"newworldorder"};
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:params options:kNilOptions error:nil];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setHTTPBody:jsonData];
[manager POST:escapedPath parameters:[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding] progress:nil success:^(NSURLSessionTask *task, id responseObject)
{
NSLog(@"%@",responseObject);
}failure:^(NSURLSessionTask *operation, NSError *error)
{
NSLog(@"%@",[error localizedDescription]);
}];
我更新了代码,因为现在我已经生成了JSON,但是如果我现在运行代码,它会给我错误:400,这意味着如果输入值为空,将输出错误的请求错误。@interface AFJSONRequestSerializer:AFHTTPRequestSerializer AFJSONRequestSerializer
是
AFHTTPRequestSerializer的一个子类,它使用NSJSONSerialization
将参数编码为JSON
添加此AFJSONRequestSerializer
用于发送JSON而不是原始数据添加此并重试一次
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
例如
NSString *string = [NSString stringWithFormat:@"%@?post_user_info",BaseURLString];
NSString *escapedPath = [string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
/************** karthik Code added ******************/
AFHTTPSessionManager* manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
/************** karthik Code added ******************/
NSDictionary *params = @{@"1": @"hello world",
@"2": @"my@you.com",
@"3": @"newworldorder"};
[manager POST:escapedPath parameters:params progress:nil success:^(NSURLSessionTask *task, id responseObject)
{
NSLog(@"%@",responseObject);
NSError *error = nil;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];
NSLog(@"json == %@", json);
} failure:^(NSURLSessionTask *operation, NSError *error) {
NSLog(@"%@", [error localizedDescription]);
}];
更新参数
NSDictionary *params = @{@"1": @"hello world",
@"2": @"my@you.com",
@"3": @"newworldorder"};
NSMutableDictionary *modify = [NSMutableDictionary new];
[modify setObject:params forKey:@"input_values"];
你得到的是
@接口AFJSONRequestSerializer:AFHTTPRequestSerializer AFJSONRequestSerializer
是
AFHTTPRequestSerializer的一个子类,它使用NSJSONSerialization
将参数编码为JSON
添加此AFJSONRequestSerializer
用于发送JSON而不是原始数据添加此并重试一次
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
例如
NSString *string = [NSString stringWithFormat:@"%@?post_user_info",BaseURLString];
NSString *escapedPath = [string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
/************** karthik Code added ******************/
AFHTTPSessionManager* manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
/************** karthik Code added ******************/
NSDictionary *params = @{@"1": @"hello world",
@"2": @"my@you.com",
@"3": @"newworldorder"};
[manager POST:escapedPath parameters:params progress:nil success:^(NSURLSessionTask *task, id responseObject)
{
NSLog(@"%@",responseObject);
NSError *error = nil;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];
NSLog(@"json == %@", json);
} failure:^(NSURLSessionTask *operation, NSError *error) {
NSLog(@"%@", [error localizedDescription]);
}];
更新参数
NSDictionary *params = @{@"1": @"hello world",
@"2": @"my@you.com",
@"3": @"newworldorder"};
NSMutableDictionary *modify = [NSMutableDictionary new];
[modify setObject:params forKey:@"input_values"];
你得到的是
嘿!这很有效。。。现在成功了。。。但是响应对象是
,这不是正常响应。这是因为我在字典中传递了错误的值吗?或者我应该去哪里寻找呢?@TalhaCh-一切都是正确的,responseObject
是我们现在需要的数据,所以在成功块中检查更新的答案你在尝试这个{“输入值”:{“输入1”:“你好”,“输入2 3”:“约翰”,“输入2 6”:“史密斯”,“输入4”:“我的段落”}是的,这正是我要做的。通过web上的表单,只有三个字段。@TalhaCh-检查更新参数answerhey!这很好…现在成功了…但是响应对象是
,这不是一个正常的响应。这是因为我在字典中传递了错误的值吗?还是我应该在哪里寻找?@TalhaCh-一切都是正确的,responseObject
是我们现在需要的数据,因此请检查成功块中的更新答案您是否正在尝试此{“输入值”:{“输入值1”:“你好”,“输入值2\u 3”:“约翰”,“输入值2\u 6”:“史密斯”,“输入值4”:“我的段落”}是的,这正是我要做的。根据web上的表单,只有三个字段。@TalhaCh-检查更新参数的答案