ios - afnetworking example
Cómo manejar el error Parse.com Rest API con AFNetworking 2.0 (1)
Estoy trabajando en el manejo del error recibido de Parse.com mientras realizo el inicio de sesión en mi aplicación IOS. Intento iniciar sesión con la contraseña incorrecta y el nombre de usuario correcto utilizando AFNetworking
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{my parameters};
[manager POST:@"{login url}" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
code
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error.localizedDescription); <-- this line gets processed
}];
El registro dice
Request failed: not found (404)
Sé que eso significa una contraseña incorrecta, pero ¿no debería ser más descriptiva? ¿Cómo manejo otro error (como Solicitud incorrecta)? ¿No debería el usuario saber por qué la solicitud falló o es mala?
EDITAR: Esta es la respuesta de Parse cuando intenté iniciar sesión con la contraseña incorrecta
{
AFNetworkingOperationFailingURLResponseErrorKey = "<NSHTTPURLResponse: 0x15571820> { URL: https://api.parse.com/1/login?password=pqpqpq&username=lalala%20namaku%20panjang%20sekali%20lhoooooooooooo } { status code: 404, headers {/n /"Access-Control-Allow-Origin/" = /"*/";/n /"Access-Control-Request-Method/" = /"*/";/n Connection = /"keep-alive/";/n /"Content-Encoding/" = gzip;/n /"Content-Length/" = 68;/n /"Content-Type/" = /"application/json; charset=utf-8/";/n Date = /"Wed, 16 Jul 2014 05:49:49 GMT/";/n Server = /"nginx/1.4.4/";/n /"X-Parse-Platform/" = G1;/n /"X-Runtime/" = /"0.113695/";/n} }";
NSErrorFailingURLKey = "https://api.parse.com/1/login?password=pqpqpq&username=lalala%20namaku%20panjang%20sekali%20lhoooooooooooo";
NSLocalizedDescription = "Request failed: not found (404)";
}
¿Cómo sé que esto significa que el objeto Usuario que coincide con el nombre de usuario y la contraseña no se encuentra, O la URL ( https://api.parse.com/1/login?password=pqpqpq&username=lalala%20namaku%20panjang%20sekali% 20lhoooooooooooo ) que no se encuentra?
A pesar de que regresa con el código http 404, el cuerpo se establece en forma json, como {"código": 101, "error": "parámetros de inicio de sesión inválidos"},
(los valores se enumeran, por ejemplo, aquí http://parse.com/docs/dotnet/api/html/T_Parse_ParseException_ErrorCode.htm ). Como el código no muestra la url exacta y cómo se configuran los encabezados, es difícil decir qué está mal aquí de lo contrario. Puede ir a https://parse.com/docs/rest#users-login y ver el ejemplo del código para CURL que le indicará cómo llamar a la URL de inicio de sesión y generalmente responde con la descripción del error JSON.
También puede consultar cómo obtener el cuerpo de HTTP 404 de AFNetworking 2.0 AFHTTPSessionManager: cómo obtener el código de estado y la respuesta JSON en el bloqueo de fallas?