【发布时间】: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,则使用正确的序列化器:stackoverflow.com/a/21672071/653513)
-
我正在使用 AFJSONResponseSerializer。似乎很好 - 我能够使用与列出的代码非常相似的模式来执行 GET、PUT 和 DELETE 请求
-
响应序列化器处理响应 - 你也需要设置请求序列化器
标签: ios objective-c afnetworking afnetworking-2