Search code examples
objective-ciosnsurlconnectionnsurlnsurlrequest

Can't POST a request to service


For some reason I always get Endpoint not found., but when I put it in the browser it works perfectly. I'm sure doing something wrong..

- (void)requestLoad:(NSString *)req_udid Age:(NSString *)req_age Gender:(NSString *)req_gender CheckBoxes:(NSString *)req_checkBoxes
{
    NSString *post = [NSString stringWithFormat:@"/UpdatePersonalInterests/%@/%@/%@/%@/0",req_udid, req_age, req_gender, req_checkBoxes];
    NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];

    //set up the request to the website
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];

    [request setURL:[NSURL URLWithString:NSLocalizedStringFromTable(@"kServiceURL", @"urls", nil)]];
    [request setHTTPMethod:@"POST"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setValue:[NSString stringWithFormat:@"%d", [postData length]] forHTTPHeaderField:@"Content-Length"];
    [request setHTTPBody:postData];

    NSError *error;
    NSURLResponse *response;

    NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    NSString *result = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];

    NSLog(@"%@",result);
}

Thanks!


Solution

  • So I've managed to do this with NSURLConnection and asynchronous request with this code:

    - (void)getIntrests
    {
        NSString *req_udid = [PROUtils createOrLoadUserIdentifier];
        NSString *webaddress = [kServiceBaseURL stringByAppendingString:[NSString stringWithFormat:@"/GetPersonalInterestsForUdid/%@",req_udid]];
    
        NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:webaddress] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:20];
    
        [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:
         ^(NSURLResponse* response, NSData* data, NSError* error) {
             NSString* dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    
             [[NSNotificationCenter defaultCenter] postNotificationName:kGotMediaFromServer object:dataString];
    
             NSLog(@"Update response completed: %@ with data: %@ error: %@",response,dataString,error);
         }];
    }
    

    Hope that it will be useful for someone.