ios - AFNetworking 2.0 总是返回 403

标签 ios objective-c json afnetworking-2

我正在使用 AFNetworking 2.0 对 JSON 发出 GET 请求

    self.managerMasterFetchDeletes = [AFHTTPRequestOperationManager manager];
        self.managerMasterFetchDeletes.requestSerializer.timeoutInterval = 4.0f;
        self.managerMasterFetchDeletes.requestSerializer = [AFJSONRequestSerializer serializer];
        self.managerMasterFetchDeletes.responseSerializer = [AFJSONResponseSerializer serializer];

NSURL *URL = [NSURL URLWithString:rest];
    NSURLRequest *request = [NSURLRequest requestWithURL:URL];
    AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
    op.responseSerializer = [AFJSONResponseSerializer serializer];

    [op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
        if (operation.response.statusCode==200){

            NSDictionary *dictionary   = (NSDictionary*)responseObject;
            NSMutableDictionary *responseData = [NSMutableDictionary new];
            if ([dictionary objectForKey:@"responseData"]) {
                responseData = [[dictionary objectForKey:@"responseData"] mutableCopy];
            }
            [responseData setValue:entity forKey:@"entityName"];
            [responseData setValue:[NSNumber numberWithInt:timeStamp] forKey:@"lastSync"];
            [[NSNotificationCenter defaultCenter]
             postNotificationName:notification
             object:nil userInfo:responseData];

        }
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];

 NSArray *operations = [AFURLConnectionOperation batchOfRequestOperations:[arrayOperations copy] progressBlock:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations) {
        NSLog(@"%lu of %lu fetch delete complete", numberOfFinishedOperations, totalNumberOfOperations);
    } completionBlock:^(NSArray *operations) {
        NSLog(@"All operations in batch complete");
        [[NSNotificationCenter defaultCenter]
         postNotificationName:@"MasterFecthDeleteEnd"
         object:nil
         userInfo:nil];
    }];

    [self.managerMasterFetchDeletes.operationQueue addOperations:operations waitUntilFinished:NO];

但它总是返回 403 错误: Not Acceptable 内容类型:text/html

奇怪的是我用 Cocoa GraphicalHttpClient 做的同样的请求,它没问题并返回 JSON 响应和这个:

内容类型:application/json;charset=UTF-8 日期:2015 年 9 月 25 日星期五 15:28:27 GMT 传输编码:身份 X-Powered-By: Servlet/2.5 JSP/2.1

非常感谢。

最佳答案

您的服务器似乎发送了 text/html ContentType。 要接受这种类型的内容,请添加 text/html acceptableContentTypes

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
[manager GET:url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

}];

关于ios - AFNetworking 2.0 总是返回 403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32785972/

相关文章:

ios - 需要更好更简单地理解 CATransform3D

ios - 相机在 iOS 的 UIImagepickercontroller 中出现黑屏

ios - 使用 Core Graphics 时为 "Potential leak of an object"

mysql - 如何在 MySQL 的 JSON 路径中使用 CONCAT?

ios - 如何像android一样在iOS NavigationController中创建菜单?

ios - 锁定然后解锁代码一段时间

ios - 使用 AudioUnits 播放和均衡音乐库中的歌曲

ios - ios中请求读取OneDrive文件夹信息失败

javascript - 无法可视化 d3 力布局中的节点

jquery - 我可以使用 Jquery UI 进入 Konva (Kineticjs) 阶段并保存到 JSON 字符串吗?