AFHTTPRequestOperationManager的EXC_BAD_ACCESS

时间:2014-07-23 04:07:58

标签: ios objective-c afnetworking afnetworking-2 afhttprequestoperation

首先要求"发布方法"它使用AFHTTPRequestOperationManager正常工作。但第二次我为同一AFHTTPRequestOperationManager调用get方法获得了EXC_BAD_ACCESS。请检查我的以下来源并帮助解决问题。

第一次打电话" POST"方法 - 工作精细

NSString *post =[[NSString alloc] initWithFormat:@"grant_type=client_credentials"];

    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding
                          allowLossyConversion:YES];


    NSMutableURLRequest *request = [[NSMutableURLRequest
                                     alloc] init];
    [request setURL:[NSURL URLWithString:@"https://example.com/oauth/token"]];
    [request setHTTPMethod:@"POST"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"enctype"];
    [request setValue:@"xxxxxxxxxx"] forHTTPHeaderField:@"Authorization"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"enctype"];
    [request setHTTPBody:postData];
    [request setTimeoutInterval:120];

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    manager.securityPolicy.allowInvalidCertificates = YES;
    [manager.requestSerializer setTimeoutInterval:120];
    [post release];
    AFHTTPRequestOperation *operation2 = [[AFHTTPRequestOperation alloc] init];


    operation2 = [manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"JSON: %@", responseObject);
        NSHTTPURLResponse *response = (NSHTTPURLResponse *)operation.response;
        NSLog(@"Response: %@", operation.responseString);

        NSLog(@"%ld",  (long)response.statusCode);

        NSData* data=[operation.responseString dataUsingEncoding:NSUTF8StringEncoding];

        NSString *response1 = [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding: NSUTF8StringEncoding];

        [[NSNotificationCenter defaultCenter] postNotificationName:@"check_auth_token_init" object:[[ResponseHandler instance] parseToken:response1]];

        [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];




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

    }];
    [operation2 start];

第二次打电话" GET" METHOD-EXC_BAD_ACCESS

  NSMutableURLRequest *request = [[NSMutableURLRequest
                                     alloc] init];
    [request setURL:[NSURL URLWithString:@"https://example.com/stu/groups/"]];
    [request setHTTPMethod:@"GET"];
    [request setValue:@"testing" forHTTPHeaderField:@"Authorization"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];


  //Here i tried to internalize "AFHTTPRequestOperationManager" but im getting EXC_BAD_ACCESS Please check attached screen shots

    AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] init];



    manager.securityPolicy.allowInvalidCertificates = YES;

    // Configure Request Operation Manager
    [manager setResponseSerializer:[AFJSONResponseSerializer serializer]];

    // Send Request
    AFHTTPRequestOperation *operation = [manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"JSON: %@", responseObject);


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

    }];
    [operation start];

enter image description here

1 个答案:

答案 0 :(得分:2)

警告"方法可能错过了[super dealloc]来电"建议您在没有ARC的情况下编译AFNetworking,这可以解释为什么对象过早被解除分配。

请按照AFNetworking自述文件中提供的安装说明进行操作,以确保正确配置所有内容。