当AFJSONRequestSerializer用于AFNetworking中的POST时,参数始终为null

时间:2014-05-12 15:49:47

标签: http-post afnetworking

我正在编写REST API,在服务器端使用SlimFramework,在客户端使用AFNetworking。

我想在Header for Authorization中添加一个值,以便我在POST之前使用AFJSONRequestSerializer。这是我的代码:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setValue:self.apikey forHTTPHeaderField:@"Authorization"];

[manager POST:url parameters:@{REST_PARAM_USERID:    userId}
      success:^(AFHTTPRequestOperation *operation, id responseObject) {

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

}];

但总是调用失败回调。我发现这是因为我传递给服务器的参数总是为null,尽管我在Xcode中调试时它们不是null。当我评论requestSerializer然后我的服务器运行良好。我不知道是什么原因。有人可以帮忙吗?感谢

1 个答案:

答案 0 :(得分:1)

使用AFJSONRequestSerializer时,您的参数将始终在HTTP请求正文中序列化为JSON。如果您的服务器不期望JSON,那么您应该重新配置服务器,或者不要使用AFJSONRequestSerializer

如果出于某种原因,您希望通过普通网址编码发送某些参数,而通过JSON发送其他,则需要手动将其附加到您的网址如下:

NSString *urlWithParams = [NSString stringWithFormat:@"%@?%@=%@", url, REST_PARAM_USERID, userId"];

[manager POST:urlWithParams parameters:@{@"some other" : @"params"}
  success:^(AFHTTPRequestOperation *operation, id responseObject) {

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

}];