1

我正在尝试使用新的 AFNetworking 2.0 版本提出一个简单的请求,但我似乎无法发布它。我从服务器“期待文本/json 或应用程序/json 正文”得到响应,但根据 AFNetworking 的 GitHub 页面上的文档,我正在做我应该做的一切。还值得一提的是,我的代码最后一行中的 operation.request.HTTPBody 似乎总是为零。

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *request = @{@"email": self.email.text, @"password": self.password.text};
[manager POST:login parameters:request constructingBodyWithBlock:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
  NSLog(@"DONE!");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Failed to log in: %@", operation.responseString);
    NSLog(@"Here's the request: %@", operation.request.HTTPBody);
}];
4

2 回答 2

4

根据文档

POST:parameters:constructingBodyWithBlock:success:failure

用于多部分 POST 请求,其默认序列化不是 JSON。

使用多部分 POST 请求创建并运行 AFHTTPRequestOperation。

你想用

POST:parameters:success:failure:

相反,如下

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *request = @{@"email": self.email.text, @"password": self.password.text};
[manager POST:login parameters:request success:^(AFHTTPRequestOperation *operation, id responseObject) {
  NSLog(@"DONE!");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Failed to log in: %@", operation.responseString);
}];
于 2013-10-16T20:54:18.813 回答
0

尝试

- (AFHTTPRequestOperation *)POST:(NSString *)URLString parameters:(NSDictionary *)parameters success:(void ( ^ ) ( AFHTTPRequestOperation *operation , id responseObject ))success failure:(void ( ^ ) ( AFHTTPRequestOperation *operation , NSError *error ))failure

此方法不需要constructBody 块。我不认为块可以为零。

于 2013-10-16T20:52:01.577 回答