我必须使用带有以下请求参数的AFNetworking库发布帖子请求
{
"method":"validate",
"name":{
"firstname":"john",
"lastname":"doe"
}
}
如何使用最新版本的AFNetworking v3库发出此请求?
我使用了以下代码,但它不起作用
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:configuration];
[manager setRequestSerializer:[AFJSONRequestSerializer serializer]];
[manager setResponseSerializer:[AFJSONResponseSerializer serializer]];
NSDictionary *parameters = @{\"method\":\"validate\",\"name\":{\"firstname\":\"john\",\"lastname\":\"doe\"}};
[manager POST:@"http://myUrl.." parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"%@",[responseObject description]);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"%@",[error localizedDescription]);
}];
我收到以下错误,
2016-02-13 11:04:54.085 SlideOutMenu[3698:50453] nulllllll
2016-02-13 11:04:55.794 SlideOutMenu[3698:50453] Failure Request failed: internal server error (500)
2016-02-13 11:04:55.795 SlideOutMenu[3698:50453] (null)
答案 0 :(得分:1)
由于您已经应用了 [manager setRequestSerializer:[AFJSONRequestSerializer序列化程序]] ,因此无需再次将字典转换为JSON。
只需将字典作为参数传递,它就可以工作。
NSDictionary *name = @{@"firstname": @"john", @"lastname": @"doe"};
NSMutableDictionary *parameters = [NSMutableDictionary new];
[parameters setObject:@"validate" forKey:@"method"];
[parameters setObject:name forKey:@"name"];
也无需使用 defaultSessionConfiguration 初始化 NSURLSessionConfiguration ,AFNetworking会自动初始化。只需使用 [AFHTTPSessionManager管理员]。
答案 1 :(得分:1)
您的代码很好。与您的服务器人联系。 代码500是服务器端错误。 查看此链接以获取响应代码详细信息