AFNetworking: usando la dirección IP, la aplicación no puede llegar al server

Cuando bash usar una dirección IP en lugar de un nombre de host para decirle a una aplicación ios en un simulador que hable con un server local, la aplicación se cuelga en la pantalla de carga, esperando una respuesta del server que nunca llega.

Soy nuevo con el Objetivo C pero el código está utilizando el marco AFNetowrking que está manejando la request y la propiedad SCNetworkReachabilityFlags se establece de manera diferente para la dirección IP en el object AFHTTPClient.

Las siguientes properties del object AFHTTPClient para la dirección IP y el nombre del host se capturaron durante una debugging.

<SCNetworkReachability 0xd26d8a0 [0x53b9ec8]> {address = 127.0.0.1, flags = 0x00010002, if_index = 1} <SCNetworkReachability 0xcf283f0 [0x53b9ec8]> {name = localhost (server query active), flags = 0x80000000, if_index = 0} 

En el método startMonitoringNetworkReachability dentro de la class AFHTTPClient.m, existe la siguiente instrucción if que se dispara para la dirección IP, pero no sé si es el problema:

 /* Network reachability monitoring does not establish a baseline for IP addresses as it does for hostnames, so if the base URL host is an IP address, the initial reachability callback is manually triggenetworking. */ if (AFURLHostIsIPAddress(self.baseURL)) { SCNetworkReachabilityFlags flags; SCNetworkReachabilityGetFlags(self.networkReachability, &flags); dispatch_async(dispatch_get_main_queue(), ^{ AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusForFlags(flags); callback(status); }); } 

Mi pregunta es qué causa el problema y cómo utilizo una dirección IP como baseURL para conectarse a un server.

Este es un problema común. Hubo una discusión sobre esto en la página de github de AFNetworking: https://github.com/AFNetworking/AFNetworking/issues/2191

Los dominios y las direcciones ip se verifican de forma diferente.

Puede verificar una dirección IP usando un administrador creado con managerForAddress: http://cocoadocs.org/docsets/AFNetworking/2.5.0/Classes/AFNetworkReachabilityManager.html#//api/name/managerForAddress :

¡Espero que esto ayude! Avísame si tienes más preguntas.

EDITAR

Creo que entendí mal la pregunta.

He enviado requestes con AFHTTPRequestOperationManager y AFURLSessionManager antes, y ambos funcionan utilizando direcciones IP en la url.

Puede encontrar un ejemplo de cómo usarlos aquí: http://cocoadocs.org/docsets/AFNetworking/2.5.0/#usage