¿Cómo enviar un objeto JSON con nombre de usuario y contraseña al servicio web de inicio de sesión REST en iphone?

Tengo que usar el objeto JSON para enviar el nombre de usuario y la contraseña para iniciar sesión en el servicio web REST. Lo he hecho en Android con el siguiente código.

HttpClient client = new DefaultHttpClient();
                    String responseBody;
                    JSONObject jObj = new JSONObject();

                    try
                    {
                        HttpPost post = new HttpPost("http://localhost:8080/MTA/login");
                        jObj.put("email", "user@email.com");
                        jObj.put("password", "password12345");

                        StringEntity se = new StringEntity(jObj.toString());  

                        post.setEntity(se);
                        post.setHeader(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
                        post.setHeader("Content-type", "application/json");
                        System.out.println("webservice request executing");

                        ResponseHandler responseHandler = new BasicResponseHandler();
                        responseBody = client.execute(post, responseHandler);

                        System.out.println("Response : " + responseBody);
                        /* 
                         * You can work here on your responseBody
                         * if it's a simple String or XML/JSON response
                         */

                    }
                    catch(Exception e)
                    {
                        System.out.println("Exception : " + e);
                    }

Tengo que hacer lo mismo en iOS. ¿Cómo puedo hacer en iOS?

preguntado el 03 de mayo de 12 a las 13:05

Por favor, aclare su pregunta, si desea recuperar los datos de inicio de sesión o insertarlos en el archivo php. -

si tiene dificultades para publicar datos, verifique el marco asihttprequest; de lo contrario, si el problema es crear json dentro de su aplicación, hay una biblioteca llamada sbjson -

@vishiphone: Quiero que me envíen el nombre de usuario y la contraseña para iniciar sesión en el servicio web. Luego, en el lado del servicio web, verifica en la base de datos si está escrito o no y da de acuerdo con esa respuesta. Por favor envíeme si alguien tiene el código. -

Ya python, tengo ese código para esperar. Actualizaré mi código para que desde ese código pueda enviar el nombre de usuario y la contraseña al servicio web y recuperar o verificar el nombre de usuario y la contraseña. -

OK, te enviaré mi código. -

2 Respuestas

Estoy trabajando con la API Ge.tt, y para iniciar sesión estoy haciendo esto:

NSString *email = @"Some email";
NSString *password = @"Some password"
NSString *apikey = @"some api key";
NSString *loginURL = @"http://open.ge.tt/1/users/login";

NSURL *url = [NSURL URLWithString:loginURL];

NSString *JSONString = [NSString stringWithFormat:@"{\"apikey\":\"%@\",\"email\":\"%@\",\"password\":\"%@\"}", apikey, email, password];

NSData *JSONBody = [JSONString dataUsingEncoding:NSUTF8StringEncoding];

NSMutableURLRequest *loginRequest = [[NSMutableURLRequest alloc] initWithURL:url];
loginRequest.HTTPMethod = @"POST";
loginRequest.HTTPBody = JSONBody;

NSOperationQueue *queue = [NSOperationQueue new];

[NSURLConnection sendAsynchronousRequest:loginRequest 
                                   queue:queue 
                       completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){

                                        // Manage the response here.

                                        }];

contestado el 04 de mayo de 12 a las 06:05

Muchas gracias Pherediac. me enviaste muy buena respuesta. NSURLResponse *respuesta; NSError *err; NSData *responseData = [NSURLConnection sendSynchronousRequest:loginRequest returnResponse:&response error:&err]; NSLog(@"datos de respuesta: %@", datos de respuesta); NSString *string = [[NSString alloc] initWithData:responseData encoding:NSASCIIStringEncoding]; NSLog(@"responseData: %@", cadena); Este es el código para obtener la respuesta adecuada. Una vez mas, Gracias. - pitón

Use este código para su servicio web si funciona, infórmenos o si tiene algún problema, pregúnteme.

-(IBAction)Submit
 {


if(([user.text length]==0) || ([password.text length]==0) || ([eMail.text length]==0) || ([contactNo.text length]==0))
{
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Alert !!!" message:@"Fill All the Text For Registration!!" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil, nil];
    [alert show];
    [alert release]; 

}

else 
{
    if([self validateEmailWithString:eMail.text])
    {
        NSString *regestrationString=[[NSString alloc]initWithFormat:@"http://www.somename.com/foldername/login.php?user_name=%@&user_password=%@&user_emailid=%@&user_contactno=%d",user.text,password.text,eMail.text,contactNo.text];
        NSURLRequest *regestrationRequest=[[NSURLRequest alloc]initWithURL:[NSURL URLWithString:regestrationString]];
        NSURLResponse *regestrationResponce;
        NSError *error;

        NSMutableData *regestrationData=[[NSMutableData alloc]initWithData:[NSURLConnection sendSynchronousRequest:regestrationRequest returningResponse:&regestrationResponce error:&error]];
        NSString *dataString=[[NSString alloc]initWithData:regestrationData encoding:NSUTF8StringEncoding];
        NSLog(@"%@",dataString);
        UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Thank You!!!" message:@"Your Registration is completed!!" delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil, nil];
        [alert show];
        [alert release];        
        [registrationView setHidden:YES];
    }
    else
    {
        UIAlertView *alert=[[UIAlertView alloc]initWithTitle:nil message:@"Invalid Email" delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil, nil];
        [alert show];
        [alert release]; 
    }
}



 }

 -(IBAction)login
 {
NSString *regestrationString=[[NSString alloc]initWithFormat:@"http://www.somename.com/foldername/login_table.php?user_name=%@&user_password=%@",userName.text,passWord.text];
NSURLRequest *regestrationRequest=[[NSURLRequest alloc]initWithURL:[NSURL URLWithString:regestrationString]];
NSURLResponse *regestrationResponce;
NSError *error;

NSMutableData *regestrationData=[[NSMutableData alloc]initWithData:[NSURLConnection sendSynchronousRequest:regestrationRequest returningResponse:&regestrationResponce error:&error]];
NSString *dataString=[[NSString alloc]initWithData:regestrationData encoding:NSUTF8StringEncoding];
NSLog(@" %@",dataString);

regestrationArray=[[NSArray alloc]init];
regestrationArray=[dataString JSONValue];
if(regestrationArray == NULL)
{
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Alert !!!" message:@"Invalid Login" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil, nil];
    [alert show];
    [alert release];        
}

userNameField =(NSString *)[NSString stringWithFormat:@"%@",[[regestrationArray objectAtIndex:0]valueForKey:@"user_name"]] ;



userName.text=@"";
passWord.text=@"";


[signInView setHidden:YES];
}

login.php tiene su consulta de inserción de base de datos y login_table.php tiene consulta de selección de base de datos.

contestado el 04 de mayo de 12 a las 05:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.