如何使用 AFNetworking AFJSONRequestOperation 确定失败的原因

Posted

技术标签:

【中文标题】如何使用 AFNetworking AFJSONRequestOperation 确定失败的原因【英文标题】:How to determine reason for failure with AFNetworking AFJSONRequestOperation 【发布时间】:2013-09-18 16:28:29 【问题描述】:

我继承了一个项目,正在实施 AFNetworking 并阅读文档,这听起来很棒,而且比当前代码简单得多。我有一个带有 json 数据的 url,所以我正在执行以下操作,但是得到了失败块并且不知道为什么。我确定它在那里,但是我如何深入研究 AF 并记录响应以确定失败原因。我知道 url 有效,但也许它点击了 url 但解析有问题?

NSString *listURL = [NSString stringWithFormat:GET_LIST,BASE_URL];
NSURL *url = [NSURL URLWithString:briefListURL];
NSURLRequest *request = [NSURLRequest requestWithURL:url];

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest: request
                                                                                        success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) 
                                                                                            self.list = [NSArray arrayWithArray:(NSArray *)JSON];                                                                                                    
                                                                                         failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) 
                                                                                            [self listOperationDidFail];
                                                                                        ];

【问题讨论】:

failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) NSLog(@"Error: %@", error); 哇非常感谢您的快速回复!这很容易,我得到了这个:错误:错误域=AFNetworkingErrorDomain Code=-1016“预期的内容类型(“text/json”,“application/json”,“text/javascript”),得到文本/纯文本“用户信息=0x8454e80 NSLocalizedRecoverySuggestion=["newsletters":.....那么内容的转储我不是网络专家,但我内部的文档说这个 url 吐出 json,我猜它不是? afnetworking 可以解决这个问题吗? 在这里找到信息:***.com/questions/10547405/… 【参考方案1】:

感谢@Larme 这成功了:

failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON)  NSLog(@"Error: %@", error); 

另外,用 text/plain 回答我自己的问题。只需在设置操作之前添加:

  [AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/plain"]];

【讨论】:

以上是关于如何使用 AFNetworking AFJSONRequestOperation 确定失败的原因的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AFNetworking 进行 json 解析

我们如何使用 AFNetworking 3.0 记录请求

如何使用 AFNetworking 上传多个文件

如何使用 AFNetworking 添加请求标头?

如何使用 afnetworking 取消网络请求

如何使用 AFNetworking 为请求设置 HTTP 正文?