Simple http post example in Objective-C?

后端 未结 8 1470
谎友^
谎友^ 2020-11-28 01:32

I have a php webpage that requires a login (userid & password). I have the user enter the information into the app just fine.. but I need an example on how to do a POST

8条回答
  •  暖寄归人
    2020-11-28 02:08

    Here i'm adding sample code for http post print response and parsing as JSON if possible, it will handle everything async so your GUI will be refreshing just fine and will not freeze at all - which is important to notice.

    //POST DATA
    NSString *theBody = [NSString stringWithFormat:@"parameter=%@",YOUR_VAR_HERE];
    NSData *bodyData = [theBody dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    //URL CONFIG
    NSString *serverURL = @"https://your-website-here.com";
    NSString *downloadUrl = [NSString stringWithFormat:@"%@/your-friendly-url-here/json",serverURL];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString: downloadUrl]];
    //POST DATA SETUP
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:bodyData];
    //DEBUG MESSAGE
    NSLog(@"Trying to call ws %@",downloadUrl);
    //EXEC CALL
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
        if (error) {
            NSLog(@"Download Error:%@",error.description);
        }
        if (data) {
    
            //
            // THIS CODE IS FOR PRINTING THE RESPONSE
            //
            NSString *returnString = [[NSString alloc] initWithData:data encoding: NSUTF8StringEncoding];
            NSLog(@"Response:%@",returnString);
    
            //PARSE JSON RESPONSE
            NSDictionary *json_response = [NSJSONSerialization JSONObjectWithData:data
                                                                          options:0
                                                                            error:NULL];
    
            if ( json_response ) {
                if ( [json_response isKindOfClass:[NSDictionary class]] ) {
                    // do dictionary things
                    for ( NSString *key in [json_response allKeys] ) {
                        NSLog(@"%@: %@", key, json_response[key]);
                    }
                }
                else if ( [json_response isKindOfClass:[NSArray class]] ) {
                    NSLog(@"%@",json_response);
                }
            }
            else {
                NSLog(@"Error serializing JSON: %@", error);
                NSLog(@"RAW RESPONSE: %@",data);
                NSString *returnString2 = [[NSString alloc] initWithData:data encoding: NSUTF8StringEncoding];
                NSLog(@"Response:%@",returnString2);
            }
        }
    }];
    

    Hope this helps!

提交回复
热议问题