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