AFNetworking 2.0:POST 返回成功响应但服务器未更新

Posted

技术标签:

【中文标题】AFNetworking 2.0:POST 返回成功响应但服务器未更新【英文标题】:AFNetworking 2.0: POST returns success response but server is not updated 【发布时间】:2015-01-31 10:55:41 【问题描述】:

我正在使用 AFNetworking 将 Book 对象添加到服务器。这是设置:

创建了一些虚拟的Book 对象用于测试:

Book *newBook1 = [[Book alloc] init];
newBook1.title = @"Test Book 1";
newBook1.author = @"Harlan";

Book *newBook2 = [[Book alloc] init];
newBook2.title = @"Test Book 2";
newBook2.author = @"Harlan";

NSArray *books = [NSArray arrayWithObjects:newBook1, newBook2, nil];

[bookCommunicator addBooks:books];

内部BookCommunicator

- (void)addBooks:(NSArray *)books

   for(Book *book in books)
   
       [self addBook:book];
   


- (void)addBook:(Book *)book

    NSDictionary *bookProperties = [NSDictionary dictionaryWithObjectsAndKeys:
                                book.author, @"author",
                                book.title, @"title",
                                nil];

    [_httpSessionManager POST:@"books" parameters:bookProperties
                  success:^(NSURLSessionDataTask *task, id responseObject) 
                      [self.delegate didAddBooks];
                  
                  failure:^(NSURLSessionDataTask *task, NSError *error) 
                      [self.delegate addingBooksFailedWithError:error];
                  
     ];

我收到了成功响应。 responseObject 是服务器上已存在的所有 Book 对象的数组 - 不包括新对象。检查服务器后,这两个新书对象不存在。关于为什么的任何想法?

【问题讨论】:

在您的情况下,服务器端问题似乎更可能发生。 服务器有一个用户界面——我可以用它发出成功的 POST 请求。只是上面没有我自己的代码 嗯,您的服务器期望什么样的格式? afnetworking 序列化器应该匹配(例如:如果服务器需要 json,则使用正确的序列化器:***.com/a/21672071/653513) 我正在使用 AFJSONResponseSerializer。似乎很好 - 我能够使用与列出的代码非常相似的模式来执行 GET、PUT 和 DELETE 请求 响应序列化器处理响应 - 你也需要设置请求序列化器 【参考方案1】:

问题不在于上面的代码,而在于 API。它需要在端点上尾随 /(即“books/”) - 但它应该接受“books”或“books/”。

【讨论】:

以上是关于AFNetworking 2.0:POST 返回成功响应但服务器未更新的主要内容,如果未能解决你的问题,请参考以下文章

使用 AFNetworking 2.0 发送 POST 数据

使用 AFNetworking 2.0 的 POST 请求 - AFHTTPSessionManager

AFNetworking 2.0 HTTP POST 进展

用于 POST 的 AFNetworking 2.0 自定义标头

AFNetworking 2.0 POST 请求的问题

AFNetworking 2.0:多部分 POST 时出现错误 503