我的AFJSONRequestOperation在200响应中遇到失败块。这是因为我有额外的 JSON 吗?
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSDictionary *d = (NSDictionary *)responseObject;
bool required = [d[@"payment_required"] boolValue];
[self.delegate paymentRequired:required];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
int statusCode = operation.response.statusCode;
NSLog(@"status code: %d response: %@", statusCode, operation.responseString);
if (operation.response.statusCode == 402) {
[self.delegate paymentRequired:true];
return ;
}
[self handleOperationFailed:operation action:^{
[self determinePaymentRequired];
}];
}];
控制台中的产量
status code: 200 response: {'payment_required':'false'}
为什么会这样?
根据我的经验,您需要满足 3 个条件才能达到成功块:
- 200响应码
- 响应中包含的正确 JSON 对象
- 响应的内容类型设置为应用程序/json
希望这能帮助你。
您的 JSON 无效。它有单引号 ( {'payment_required':'false'}
),但 JSON 格式需要它们是双引号:
{
"payment_required" : false
}
PS:我还删除了false
上的引号,因为false
是一个有效的值(并且是首选值)。