0

I was trying to load data for the table using values from server.I am using NSURLSession datatask with completion handler. Whenever it reaches the nsurlsession, it shows error.This is the code which i used for getting data.

- (void)geturl:(NSString *)urlvalue datavalues:(NSString *)string fetchGreetingcompletion:(void (^)(NSDictionary *dictionary, NSError *error))completion{

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@?%@",common.getUrlPort,urlvalue,common.getappversion]];
NSLog(@"url=%@",url);

NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: nil delegateQueue: [NSOperationQueue mainQueue]];

NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:url];
[urlRequest addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[urlRequest addValue:common.getauthtoken forHTTPHeaderField:@"Authorization"];
//Create POST Params and add it to HTTPBody
[urlRequest setHTTPMethod:@"GET"];

NSURLSessionDataTask * dataTask =[defaultSession dataTaskWithRequest:urlRequest
                                                   completionHandler:^(NSData *data, NSURLResponse *response, NSError *connectionError) {
                                                       NSLog(@"Response:%@ %@\n", response, connectionError);                                                        




    if (data.length > 0 && connectionError == nil)
   {
       NSDictionary *greeting = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
       NSString *code = [NSString stringWithFormat:@"%@",[greeting valueForKey:@"code"]];
       if([code isEqualToString:@"-1"]){
           [self loaderrorview:greeting];
       }
       else{
           if (completion)
               completion(greeting, connectionError);
       }
   }
   else if(data == nil){
       NSDictionary *errorDict=[[NSDictionary alloc]initWithObjectsAndKeys:@"Server Connection Failed",@"error", nil];
       if (completion)
           completion(errorDict,connectionError);
   }
   else
   {
       NSDictionary *greeting = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
       if (completion)
           completion(greeting, connectionError);
   }
    }];
    [dataTask resume];
}

The code which i used for getting data from server:

-(void)getdataexplore{
    if (!common.checkIfInternetIsAvailable) {
        [self.view makeToast:Nointernetconnection];
    } else {
        NSLog(@"There is internet connection");
        [SVProgressHUD setDefaultMaskType:SVProgressHUDMaskTypeBlack];
        [SVProgressHUD showWithStatus:@"Loading..."];

        [apiservice geturl:loadexploredata datavalues:nil fetchGreetingcompletion:^(NSDictionary *dictionary, NSError *error) {
            //NSLog(@"Test %@ Error %@",dictionary,error);
            if(error == nil){
                authDictionary = dictionary;
                [self loaddata];
            }
            else{
                [SVProgressHUD dismiss];
                [view_business makeToast:@"Request timed out" duration:2.0 position:CSToastPositionCenter];
            }
        }];
    }
}

The code which i used for storing server data to array:

-(void)loaddata
{
    [SVProgressHUD setDefaultMaskType:SVProgressHUDMaskTypeBlack];
    [SVProgressHUD showWithStatus:@"Loading..."];
    //[SVProgressHUD dismiss];
    NSString *msg = [authDictionary valueForKey:@"msg"];
    NSString *code = [NSString stringWithFormat:@"%@",[authDictionary valueForKey:@"code"]];
    if([code isEqualToString:@"201"]){
        NSDictionary *explore = [authDictionary valueForKey:@"explore_obj"];
        arr_CBcategories = [explore valueForKey:@"cb_categories"];
        [common setarrCBCaterory:arr_CBcategories];
        arr_CBcategoryid = [arr_CBcategories valueForKey:@"id"];
        [common setarrCateroryID:arr_CBcategoryid];
        arr_CBcategorytitle = [arr_CBcategories valueForKey:@"title"];
        [common setarrCaterorytitle:arr_CBcategorytitle];
        arr_CBcategoryslug = [arr_CBcategories valueForKey:@"slug"];
        [common setarrCateroryslug:arr_CBcategoryslug];
        arr_CBcategoryimage = [arr_CBcategories valueForKey:@"image"];
        [common setarrCateroryimage:arr_CBcategoryimage];
        arr_CBcategorycode = [arr_CBcategories valueForKey:@"code"];
}

I am getting error like "Unable to run main thread". Any solution for this.

  • Please check [how to ask question](https://stackoverflow.com/help/how-to-ask) and [Minimal, Complete, and Verifiable example](https://stackoverflow.com/help/mcve) – Morse Apr 04 '18 at 15:56
  • Please post the EXACT error. – dgatwood Apr 05 '18 at 20:37
  • You shouldn't be setting Content-Encoding with a GET request. That header is intended to specify the content body encoding for POST requests. I have no idea if that's the only problem without seeing the exact error message. – dgatwood Apr 05 '18 at 20:41

0 Answers0