0

我的 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'}

为什么会这样?

4

2 回答 2

1

根据我的经验,你需要满足三个条件才能成功:

  1. 200响应码
  2. 响应中包含的正确JSON 对象
  3. 响应的 Content-Type 设置为application/json

希望这可以帮到你。

于 2013-09-19T00:59:27.653 回答
0

您的 JSON 无效。它有单引号 ( {'payment_required':'false'}),但 JSON 格式需要它们是双引号:

{
     "payment_required" : false 
}

PS:我还删除了引号false,因为false它是一个有效值(并且是首选)。

于 2013-09-19T01:03:10.203 回答