Breve reseña histórica, nuestro desarrollador anterior usó ASIHTTPRequest para realizar solicitudes POST y recuperar datos de nuestro servicio web. Por razones desconocidas, esta parte de nuestra aplicación dejó de funcionar. Parecía tiempo lo suficientemente bueno para futuras pruebas e ir con AFNetworking. El servicio web REST se ejecuta en el marco de CakePHP.AFNetworking POST to REST webservice
En resumen, no recibo la cadena de respuesta de solicitud utilizando AFNetworking.
Sé el servicio web funciona porque soy capaz de colocar correctamente los datos y recibir la respuesta adecuada utilizando rizo: rizo -d "de datos [modelo] [] = Field0 field0value & datos [Modelo] [campo1] = field1value" https://example.com/api/class/function.plist
Según las instrucciones del desarrollador anterior, se me ocurrió lo siguiente.
#import "AFHTTPRequestOperation.h"
…
- (IBAction)loginButtonPressed {
NSURL *url = [NSURL URLWithString:@"https://example.com/api/class/function.plist"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:[usernameTextField text] forHTTPHeaderField:@"data[User][email]"];
[request setValue:[passwordTextField text] forHTTPHeaderField:@"data[User][password]"];
AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:request] autorelease];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"operation hasAcceptableStatusCode: %d", [operation.response statusCode]);
NSLog(@"response string: %@ ", operation.responseString);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error: %@", operation.responseString);
}];
[operation start];
}
de salida: operación hasAcceptableStatusCode: 200 cadena respuesta: un archivo plist en blanco
intento de solución 1: AFNetworking Post Request la solución propuesta utiliza una función de AFHTTPRequestOperation llama operationWithRequest. Sin embargo, cuando trato de usar dicha solución recibo una advertencia "Class method" + operationWithRequest: completion: 'not found (tipo de retorno por defecto' id '"
intento de solución 2: NSURLConnection. Output: soy capaz para imprimir el registro de éxito, pero no contactado a la cadena de respuesta * actualización -.. retornos plist en blanco
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
NSString *httpBodyData = @"data[User][email][email protected]&data[User][password]=awesomepassword";
[httpBodyData dataUsingEncoding:NSUTF8StringEncoding];
[req setHTTPMethod:@"POST"];
[req setHTTPBody:[NSData dataWithContentsOfFile:httpBodyData]];
NSHTTPURLResponse __autoreleasing *response;
NSError __autoreleasing *error;
[NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&error];
// *update - returns blank plist
NSData *responseData = [NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil];
NSString *str = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"responseData %@",str);
if (error == nil && response.statusCode == 200) {
// Process response
NSLog(@"success");//returns success code of 200 but blank
NSLog(@"resp %@", response);
} else {
// Process error
NSLog(@"error");
}
Hola, Pouria, ¿has intentado utilizar NSURLConnection para enviar una solicitud sincrónica? – 8vius
intento solución 2: es como probé NSURLConnection. – Airuop
¿Tiene todo lo que está en el lado del servidor configurado correctamente? Al igual que el análisis de extensión, los diseños para la respuesta y las vistas para ellos? Parece más un problema de servidor que uno de cliente. – 8vius