如何使用AFnetworking进行发布请求?

时间:2016-02-13 04:40:26

标签: ios objective-c afnetworking

我必须使用带有以下请求参数的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)

2 个答案:

答案 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是服务器端错误。 查看此链接以获取响应代码详细信息

http://www.restapitutorial.com/httpstatuscodes.html