7

me he dado cuenta recientemente, que mi código, que utiliza AFNetworking (versión más reciente de rama principal) dejó de funcionar correctamente en iOS 6. Aquí está mi código:AFNetworking dejó de funcionar bajo iOS 6

httpClient = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:baseURL]]; 
httpClient.operationQueue.maxConcurrentOperationCount = 1; 

donde httpClient es una variable de clase.

A continuación, estoy creando una petición:

NSMutableURLRequest *signInRequest = [httpClient requestWithMethod:@"POST" path:@"/user/register" parameters:dataToSend]; 
signInRequest.timeoutInterval = 15.0; 
signInRequest.cachePolicy = NSURLRequestReloadIgnoringLocalAndRemoteCacheData; 

AFJSONRequestOperation *signInOperation = [AFJSONRequestOperation JSONRequestOperationWithRequest:signInRequest success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) 
{ 
    // Blah 
} 
    failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) 
{ 
    // Blah 
}]; 

[httpClient enqueueHTTPRequestOperation:signInOperation]; 

Todas las demás solicitudes se construyen de manera similar. La primera operación en cola funciona bien, puedo ingresar al bloque de controlador de éxito. Sin embargo, las siguientes llamadas a otras solicitudes han finalizado con el controlador de errores y el error request timeout, sin importar qué tan grande sea el valor de tiempo de espera que elijo.

He hecho las mismas llamadas usando plain NSURLConnection, escribiendo toneladas de código :), con éxito, las solicitudes se procesaron correctamente.

Cambié a iOS 5 y el código anterior funciona bien.

Cambié a la conexión 3G (iOS 6), y funciona el código anterior.

Parece como si tuviera este problema sólo en conexiones WiFi (excepto el caso cuando estoy en la misma subred con mi servidor REST.)

Alguna idea sobre esto?

Gracias de antemano.

+0

Lo mismo sucede aquí. Pude hacerlo funcionar codificando la solicitud manualmente pero aún usando AF..RequestOperation. AFHTTPClient funcionó en el wifi de mi casa, pero no a través del proxy de mi uni. –

Respuesta

2

¡Parece que también has publicado un problema en el github de AFNetworking y has encontrado la solución tú mismo :)!

Parece que iOS 6 cambia algo a la implementación de TCP o algo así. Trasladé el servidor a un alojamiento de terceros y está funcionando ahora.

Para lectores futuros, el problema se puede encontrar here.