我正在编写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然后我的服务器运行良好。我不知道是什么原因。有人可以帮忙吗?感谢
答案 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) {
}];