【问题标题】:AFNetworking 2.0: POST returns success response but server is not updatedAFNetworking 2.0:POST 返回成功响应但服务器未更新
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    相关资源
    最近更新 更多