Error Domain = NSURLErrorDomain Code = -1005 "Se perdió la conexión de red".


268

Tengo una aplicación que funciona bien en Xcode6-Beta1 y Xcode6-Beta2 con iOS7 e iOS8. Pero con Xcode6-Beta3, Beta4, Beta5, tengo problemas de red con iOS8, pero todo funciona bien en iOS7. Me sale el error "The network connection was lost.". El error es el siguiente:

Error: Error Domain = NSURLErrorDomain Code = -1005 "Se perdió la conexión de red". UserInfo = 0x7ba8e5b0 {NSErrorFailingURLStringKey =, _kCFStreamErrorCodeKey = 57, NSErrorFailingURLKey =, NSLocalizedDescription = La conexión de red se perdió., _KCFStreamErrorDomainKey = 1, NSUnderlyingError = 069 ".

Utilizo AFNetworking 2.xy el siguiente fragmento de código para realizar la llamada de red:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager setSecurityPolicy:policy];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];

[manager POST:<example-url>
   parameters:<parameteres>
      success:^(AFHTTPRequestOperation *operation, id responseObject) {
          NSLog(@“Success: %@", responseObject);
      } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
          NSLog(@"Error: %@", error);
      }];

Lo intenté NSURLSessionpero sigo recibiendo el mismo error.


Cualquier actualización ? Solo sucede en iOS 8 en Wifi para mí, todavía estoy tratando de encontrar una solución.
Dimillian


¿Alguien puede ayudarme a resolver mi problema, casi el mismo problema pero diferente código de error, stackoverflow.com/questions/26972822/…
iYoung

1
enfrenta el mismo problema con iOS 10.0.1 y Xcode 8.
Satheeshwaran

1
Recibí este error esta mañana y lo solucioné ahora con una solución simple y extraña. La dirección del servidor solicitada es incorrecta, no se devuelve ningún código de estado 4xx o 5xx, solo se encontró con este problema, no estoy seguro de cuál es exactamente la causa raíz. Por lo tanto, confirme con los desarrolladores de back-end de su equipo, o perderá unas horas en ello.
Itachi

Respuestas:


413

Reiniciar el simulador me solucionó el problema.


3
¿Qué sucede si este problema está en el dispositivo, no en el sim? Intenté reiniciar el dispositivo, sigue siendo el mismo error.
Sean Clark

2
@SeanClark: vea la siguiente respuesta: reiniciar el simulador funciona porque el sistema operativo debe desconectar la conexión en lugar de intentar reutilizarla después de que el servidor la haya desconectado. Para solucionar este problema, puede deshabilitar el mecanismo Keep-alive en el servidor para los clientes iOS o, si no tiene acceso al servidor, simplemente puede intentar de nuevo la misma solicitud cuando falla (debería producirse un error el sistema operativo desconecta la conexión y se crea una nueva cuando se envía el reintento).
Arthur

Actualmente estoy usando Xcode 6.2 y lo que resolvió fue hacer clic en Simulador de iOS> Restablecer configuración y contenido. Una vez que terminé, salí del simulador y reconstruí y ejecuté mi proyecto ... todo funcionó perfectamente después.
KingPolygon

Me ha funcionado restablecer el simulador, pero solo el 10% del tiempo. Acabo de recibir un nuevo ISP y funciona un poco raro. Esto sucede todo el tiempo ahora en el simulador. Podría ser la red.
noobsmcgoobs

1
Restablecer el simulador no funcionó para mí. Sin embargo, comenzar Charles hizo que el problema desapareciera. Consulte stackoverflow.com/a/26066764/598057 que sugiere usar Charles. Muy extraño pero funciona ...
Stanislav Pankevich

231

Tuvimos este error exacto y resultó ser un problema con la implementación HTTP subyacente de NSURLRequest:

Por lo que podemos decir, cuando iOS 8/9/10/11 recibe una respuesta HTTP con un Keep-Aliveencabezado, mantiene esta conexión para reutilizarla más tarde (como debería), pero la mantiene durante más tiempo que el timeoutparámetro Encabezado Keep-Alive (parece que siempre mantiene la conexión activa durante 30 segundos). Luego, cuando la aplicación envía una segunda solicitud menos de 30 segundos después, intenta reutilizar una conexión que el servidor podría haber caído. (si Keep-Aliveha transcurrido más de lo real ).

Aquí están las soluciones que hemos encontrado hasta ahora:

  • Aumente el parámetro de tiempo de espera del servidor por encima de 30 segundos. Parece que iOS siempre se comporta como si el servidor mantuviera la conexión abierta durante 30 segundos, independientemente del valor proporcionado en el encabezado Keep-Alive. (Esto se puede hacer para Apache configurando la KeepAliveTimeoutopción.
  • Simplemente puede deshabilitar el mecanismo Keep Live para clientes iOS basado en el User-Agent de su aplicación (por ejemplo, para Apache: BrowserMatch "iOS 8\." nokeepaliveen el archivo mod setenvif.conf)
  • Si no tiene acceso al servidor, puede intentar enviar sus solicitudes con un Connection: closeencabezado: esto le indicará al servidor que desconecte la conexión de inmediato y que responda sin ningún encabezado de mantener vivo. PERO en este momento, NSURLSession parece anular el Connectionencabezado cuando se envían las solicitudes (no probamos esta solución ampliamente, ya que podemos modificar la configuración de Apache)

77
Aquí hay un proyecto ejemplar que demuestra el problema, también se ha enviado un informe de error a Apple. cl.ly/Xgkl/keep-alive-fail.zip Inicie el proyecto, haga clic en el primer botón de publicación (arriba en la pantalla), espere 5 segundos, vuelva a hacer clic en él, error.
Dimillian

55
Mantener vivo es bilateral. Los clientes agregarán un encabezado http "Conexión: Keep-Alive" de forma predeterminada, agregar parámetros de mantener vivo en las solicitudes del cliente puede ayudar; por ejemplo, "Keep-Alive: max = 1". El comentario de Arthur es muy útil, pero también indica más de 1 problema en la red del simulador iOS8. Tengo que usar https para obtener una conexión, ya que http falla antes de enviar una solicitud.
ptc

55
Hola chicos, estoy teniendo exactamente el mismo problema en el dispositivo. ¿Hay alguna solución para esto? Sin embargo, no hay ningún problema en iOS 7.
Andres C

9
Consejo: puede usar la NSURLErrorNetworkConnectionLostconstante en lugar de la codificación rígida -1005.
Vincent Tourraine

66
Este problema todavía está presente en iOS 11.2.6.
Makalele

47

Para el mío, Resetting content and settingsde Simulator funciona. Para restablecer el simulador, siga los pasos:

Simulador de iOS -> Restablecer contenido y configuración -> Presione Restablecer (en la advertencia que vendrá)


29

El tiempo de ejecución del simulador de iOS 8.0 tiene un error por el cual si la configuración de su red cambia mientras se inicia el dispositivo simulado, las API de nivel superior (por ejemplo: CFNetwork) en el tiempo de ejecución simulado pensarán que ha perdido la conectividad de la red. Actualmente, la solución recomendada es simplemente reiniciar el dispositivo simulado cuando cambia la configuración de su red.

Si se ve afectado por este problema, presente radares duplicados adicionales en http://bugreport.apple.com para obtener una mayor prioridad.

Si ve este problema sin haber cambiado las configuraciones de red, entonces ese no es un error conocido, y definitivamente debe archivar un radar, lo que indica que el problema no es el error conocido de cambio de configuración de red.


77
Tengo este problema en un dispositivo también.
Darren

@darren Entonces no es el problema al que me refería. Te sugiero que archives un radar.
Jeremy Huddleston Sequoia

44
incluya su ID de radar para que sea más fácil presentar duplicados
Daniel Galasko

11

Lo que resolvió el problema para mí fue reiniciar el simulador y restablecer el contenido y la configuración.


También ayuda a eliminar la aplicación antes de reiniciar el simulador y reiniciar la Mac. A menudo cambio de lugar con diferentes puntos wifi y este es un procedimiento que me soluciona el problema.
Vladimír Slavík

11

También tenga un problema con beta 5 y AFNetworking 1.3 cuando se ejecuta en el simulador de iOS 8 que produce un error de conexión:

Domain = NSURLErrorDomain Code = -1005 "Se perdió la conexión de red".

El mismo código funciona bien en los simuladores de iOS 7 y 7.1 y mi proxy de depuración muestra que la falla ocurre antes de que se intente realmente una conexión (es decir, no se registran solicitudes).

He rastreado la falla de NSURLConnection y reporté un error a Apple. Ver línea 5 en la imagen adjunta:

El delegado del cliente NSURLConnection falló error.

El cambio de uso httpspermite la conexión desde simuladores de iOS 8 aunque con errores intermitentes.

El problema aún está presente en Xcode 6.01 (gm).


Veo el mismo problema con NSURLSession y NSURLConnection, eso descarta el problema con AFNetworking. También encontré que funciona con https y falla con http. Todavía no pude encontrar ninguna solución, ¿obtuviste alguna resolución?
VoidStack

Ninguna resolución ha informado que un error (18072300) agregará comentarios sobre el funcionamiento de https que es una buena información.
ptc

¿podrías pegar el enlace de error aquí? Gracias porque creo que tengo el mismo problema pero solo uso NSURLConnection (y delegados) pero recibo el mismo mensaje de error
szuniverse

No se puede compartir el informe de errores de Apple. Todavía abierto y todavía presente en XCODE 6 beta 7. Si presenta un informe de error, eso también lo ayudará con prioridad.
ptc

Parece que este problema está en el simulador de iOS y estoy cansado con el dispositivo real, funciona bien. Más depuración encontré que el problema es sobre el puerto en el simulador de iOS, el puerto 443 de https funciona bien y estaba usando 8080 para http, solía fallar. Intenté usar otros puertos y pude hacer una llamada http en el simulador de iOS. Parece un error en la versión beta de Xcode 6, debe esperar a que se
establezca

10

Estaba experimentando este problema mientras usaba Alamofire. Mi error fue que estaba enviando un diccionario vacío [:]para los parámetros en una GETsolicitud, en lugar de enviar nilparámetros.

¡Espero que esto ayude!


GET y POST con el diccionario de cuerpo vacío [:] causará este error al azar. Estoy usando Python Flask para las API REST de back-end, esto también puede ser útil.
Mahmoud Fayez

10

Abrir Charles resolvió el problema para mí, lo que parece muy extraño ...

Charles es un proxy HTTP / monitor HTTP / Proxy inverso que permite a un desarrollador ver todo el tráfico HTTP y SSL / HTTPS entre su máquina e Internet. Esto incluye solicitudes, respuestas y los encabezados HTTP (que contienen las cookies y la información de almacenamiento en caché).


1
Esto también funciona para mí, creo que porque Charles utiliza un certificado SSL para representar el sumulator solicita que haga un truco similar al uso de https
thisispete

1
¡Esto funciona para mí siempre! Lo he probado 30 veces y funciona 30 de 30. Pensé que era casualidad, pero es bueno saber que no soy yo.
jdog

2
Charles es una herramienta de representación que le permite ver el tráfico desde su máquina. Visite charlesproxy.com para más detalles. El certificado SSL de Charles puede interferir con la capacidad del simulador para realizar solicitudes de red.
Colin Tremblay

@ColinTremblay Creo que su simulador / dispositivo está configurado para usar proxy. Eliminar proxy también funcionará.
bikram990

Ridículamente, esto funcionó para mí también. Se necesita tener Charles abierto y luego restablecer la configuración del simulador de iOS.
Matt Andrews el

6

Vea el comentario de pjebs el 5 de enero en Github.

Método 1 :

if (error.code == -1005)
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{

        dispatch_group_t downloadGroup = dispatch_group_create();
        dispatch_group_enter(downloadGroup);
        dispatch_group_wait(downloadGroup, dispatch_time(DISPATCH_TIME_NOW, 5000000000)); // Wait 5 seconds before trying again.
        dispatch_group_leave(downloadGroup);
        dispatch_async(dispatch_get_main_queue(), ^{
            //Main Queue stuff here
            [self redoRequest]; //Redo the function that made the Request.
        });
    });

    return;
}

También algunos sugieren volver a conectarse al sitio,

es decir, disparando la solicitud POST DOS VECES

Solución: use un método para conectarse al sitio, return (id), si se perdió la conexión de red, vuelva a usar el mismo método.

Método 2

-(id) connectionSitePost:(NSString *) postSender Url:(NSString *) URL {
     // here set NSMutableURLRequest =>  Request

    NSHTTPURLResponse *UrlResponse = nil;
    NSData *ResponseData = [[NSData alloc] init];

    ResponseData = [NSURLConnection sendSynchronousRequest:Request returningResponse:&UrlResponse error:&ErrorReturn];

     if ([UrlResponse statusCode] != 200) {

          if ([UrlResponse statusCode] == 0) {

                  /**** here re-use method ****/
                  return [self connectionSitePost: postSender Url: URL];
          }

     } else {
          return ResponseData;
     }

}

Método 1 me ayudó mucho .. Gracias
Abhishek Mitra

4

También recibí este error, pero en dispositivos reales en lugar del simulador. Notamos el error al acceder a nuestro backend heroku en HTTPS (servidor gunicorn), y al hacer POSTS con grandes cuerpos (cualquier cosa de más de 64Kb). Utilizamos la autenticación básica HTTP para la autenticación, y notamos que el error se resolvió al NO usar el didReceiveChallenge:método delegado en NSURLSession, sino al incorporar la autenticación en el encabezado de la solicitud original mediante la adición Authentiation: Basic <Base64Encoded UserName:Password>. Esto evita que el 401 necesario active el didReceiveChallenge:mensaje de delegado y se pierda la conexión de red posterior.


Muchas gracias por tu valioso comentario. Tienes razón si subo debajo de la cadena base64 de la imagen de 64 kb, se cargará correctamente.
Vinayak Bhor

3

Tuve el mismo problema Solución era simple, lo he instalado HTTPBody, pero no he puesto HTTPMethoda POST. Después de arreglar esto, todo estuvo bien.


3

Yo tuve el mismo problema. No sé cómo AFNetworking implementa la solicitud https, pero la razón para mí es el problema de caché de NSURLSession.

Después de que mi aplicación realice un seguimiento desde Safari y luego publique una solicitud http, aparecerá el error "Error de carga http 1005". Si dejo de usar "[NSURLSession sharedSession]", pero para usar una instancia de NSURLSession configurable para llamar al método "dataTaskWithRequest:" de la siguiente manera, el problema está resuelto.

NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
config.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
config.URLCache = nil;
self.session = [NSURLSession sessionWithConfiguration:config];

Solo recuerda configurar config.URLCache = nil;.


1
Creo que todos los que reinician el dispositivo / simulador o restablecen los datos deberían analizar esta respuesta. Para mí, todas sus acciones parecen borrar el caché, lo que realmente soluciona el problema. Entonces, probablemente sea un problema de caché de URL. Lo voy a probar ahora.
Kamran Khan

2

Tuve que salir de XCode, eliminar el contenido de la carpeta DerivedData (~ / Library / Developer / Xcode / DerivedData o / Library / Developer / Xcode / DerivedData) y salir del simulador para que esto funcione.


1
La única acción relevante en esa lista fue reiniciar el simulador. Reiniciar Xcode y eliminar datos derivados es excesivo.
Jeremy Huddleston Sequoia

2

También tengo este problema, ejecutándose en un dispositivo iOS 8. Aquí se detalla un poco más y parece ser un caso de iOS tratando de usar conexiones que ya han expirado. Mi problema no es el mismo que el problema Keep-Alive explicado en ese enlace, sin embargo, parece ser el mismo resultado final.

He corregido mi problema ejecutando un bloque recursivo cada vez que recibo un error -1005 y esto hace que la conexión finalmente se complete, aunque a veces la recursión puede repetirse más de 100 veces antes de que la conexión funcione, sin embargo, solo agrega un segundo segundo en ejecución veces y apuesto a que ese es el tiempo que le toma al depurador imprimir los NSLog para mí.

Así es como ejecuto un bloque recursivo con AFNetworking: agregue este código a su archivo de clase de conexión

// From Mike Ash's recursive block fixed-point-combinator strategy https://gist.github.com/1254684
dispatch_block_t recursiveBlockVehicle(void (^block)(dispatch_block_t recurse))
{
    // assuming ARC, so no explicit copy
    return ^{ block(recursiveBlockVehicle(block)); };
}
typedef void (^OneParameterBlock)(id parameter);
OneParameterBlock recursiveOneParameterBlockVehicle(void (^block)(OneParameterBlock recurse, id parameter))
{
    return ^(id parameter){ block(recursiveOneParameterBlockVehicle(block), parameter); };
}

Entonces úsalo así:

+ (void)runOperationWithURLPath:(NSString *)urlPath
            andStringDataToSend:(NSString *)stringData
                    withTimeOut:(NSString *)timeOut
     completionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
                        failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
{
    OneParameterBlock run = recursiveOneParameterBlockVehicle(^(OneParameterBlock recurse, id parameter) {
        // Put the request operation here that you want to keep trying
        NSNumber *offset = parameter;
        NSLog(@"--------------- Attempt number: %@ ---------------", offset);

        MyAFHTTPRequestOperation *operation =
            [[MyAFHTTPRequestOperation alloc] initWithURLPath:urlPath
            andStringDataToSend:stringData
            withTimeOut:timeOut];

        [operation setCompletionBlockWithSuccess:
            ^(AFHTTPRequestOperation *operation, id responseObject) {
                success(operation, responseObject);
            }
            failure:^(AFHTTPRequestOperation *operation2, NSError *error) {
                if (error.code == -1005) {
                    if (offset.intValue >= numberOfRetryAttempts) {
                        // Tried too many times, so fail
                        NSLog(@"Error during connection: %@",error.description);
                        failure(operation2, error);
                    } else {
                        // Failed because of an iOS bug using timed out connections, so try again
                        recurse(@(offset.intValue+1));
                    }
                } else {
                    NSLog(@"Error during connection: %@",error.description);
                    failure(operation2, error);
                }
            }];
        [[NSOperationQueue mainQueue] addOperation:operation];
    });
    run(@0);
}

Verá que uso una AFHTTPRequestOperationsubclase pero agrego su propio código de solicitud. La parte importante es llamar recurse(@offset.intValue+1));para que el bloque se vuelva a llamar.


¿Qué es la clase MyAFHTTPRequestOperation?
jdog

Es solo una subclase AFHTTPRequestOperation. Lo uso para predefinir algunas cosas como tiempo de espera y autenticación.
Darren

2

Si el problema ocurre en un dispositivo, verifique si el tráfico pasa por un proxy (Configuración> Wi-Fi> (información)> Proxy HTTP). Tenía la configuración de mi dispositivo para usar con Charles, pero olvidé el proxy. Parece que sin Charles realmente ejecutando este error se produce.


2

Si alguien recibe este error al cargar archivos en un servidor de fondo, asegúrese de que el servidor receptor tenga un tamaño de contenido máximo que sea permitido para sus medios. En mi caso, NGINX requirió una mayor client_max_body_size. NGINX rechazaría la solicitud antes de que se realizara la carga, por lo que no volvió ningún código de error.


2

Recibí el error en un dispositivo iOS 7 cuando estaba usando Xcode 6.2 beta.

Cambiar de Xcode 6.2 beta a 6.1.1 solucionó el problema, al menos en un dispositivo iOS 7.


No creo que haya nada que resolver: el sistema operativo subyacente pierde la conexión por una razón legítima o no. Una aplicación debe estar preparada para manejarla (trabajar sin conexión o lo que sea). Asumir que el SDK en su versión particular de xcode no es defectuoso, por supuesto: como mi respuesta sugiere, 6.2 probablemente fue defectuoso, mientras que 6.1.1 fue bueno. Se puede observar algo similar ahora cuando xcode 6.4 parece razonablemente estable, mientras que 7.0.1 es un software de grado alfa. O eso parece.
Anton Tropashko

2

En 2017-01-25Apple lanzó un Q&A técnico con respecto a este error:

Preguntas y respuestas técnicas de Apple QA1941

Manejo de errores "Se perdió la conexión de red"

R: NSURLErrorNetworkConnectionLost es el error -1005 en el dominio de error NSURLErrorDomain, y se muestra a los usuarios como "Se perdió la conexión de red". Este error significa que la conexión TCP subyacente que lleva la solicitud HTTP se desconectó mientras la solicitud HTTP estaba en curso (consulte a continuación para obtener más información al respecto). En algunas circunstancias, NSURLSession puede volver a intentar dichas solicitudes automáticamente (específicamente, si la solicitud es idempotente), pero en otras circunstancias eso no está permitido por los estándares HTTP.

https://developer.apple.com/library/archive/qa/qa1941/_index.html#//apple_ref/doc/uid/DTS40017602


1

Tuve el problema durante meses y finalmente descubrí que cuando deshabilitamos DNSSEC en nuestro dominio de API, todo estaba bien: simple_smile:


2
¿Podría por favor elaborar?
Groot

1

Me estaba conectando a través de una VPN. Deshabilitar la VPN resolvió el problema.


1

Estaba detectando este error al pasar una NSURLRequest a una NSURLSession sin configurar el HTTPMethod de la solicitud .

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:urlComponents.URL];

Error Domain = NSURLErrorDomain Code = -1005 "Se perdió la conexión de red".

Agregue HTTPMethod, sin embargo, y la conexión funciona bien

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:urlComponents.URL];
[request setHTTPMethod:@"PUT"];

1

Pruebe si puede solicitarlo desde otras aplicaciones (como safari). Si no, podría ser algo en su computadora. En mi caso, tuve este problema con Avast Antivirus, que estaba bloqueando mi solicitud de simuladores (no me pregunten por qué).


1

Reiniciar la computadora me solucionó el problema con Xcode9.1. Había reiniciado el simulador y Xcode, no funciona.


1

Estaba enfrentando el mismo problema, he habilitado el Acondicionador de enlace de red para pruebas de red lentas para la aplicación. Eso estaba creando este error algunas veces, cuando lo desactivé Settings > Developer > Network Link Conditioner, resolvió mi problema.

ingrese la descripción de la imagen aquí

Espero que esto ayude a alguien.


1

Además de todas las respuestas, encontré una buena solución. En realidad, el problema relacionado con la conexión de red falla para iOS 12 onword es porque hay un error en iOS 12.0 onword. Y aún no se ha resuelto. Había pasado por la comunidad de git hub por un problema relacionado con AFNetworking cuando la aplicación vino de fondo e intenta hacer llamadas de red y falla al establecer la conexión. Paso 3 días en esto e intento muchas cosas para llegar a la causa raíz de esto y no encontré nada. Finalmente obtuve un poco de luz en la oscuridad cuando leí este blog https://github.com/AFNetworking/AFNetworking/issues/4279

Está diciendo que hay un error en el iOS 12. Básicamente, no puede esperar que se complete una llamada de red si la aplicación no está en primer plano. Y debido a este error, las llamadas de la red se cortan y la red falla en los registros.

Mi mejor sugerencia para usted es proporcionar un retraso cuando su aplicación esté en segundo plano y haya una llamada de red. Realice esa llamada de red en el despacho asíncrono con cierto retraso. Nunca obtendrá la caída de llamadas de red o pérdida de conexión

No espere a que Apple permita que este problema se resuelva para iOS 12, ya que aún no se ha solucionado. Puede optar por esta solución al proporcionar un retraso para su solicitud de red, ya sea NSURLConnection, NSURLSession o AFNetworking o ALAMOFIRE. Salud :)


1

En mi caso fue porque me estaba conectando a HTTP y se estaba ejecutando en HTTPS


0

Estaba teniendo este problema por la siguiente razón.

TLDR: compruebe si está enviando una GETsolicitud que debería enviar los parámetros en la URL en lugar de en la NSURLRequest's HTTBodypropiedad.

==================================================

Había montado una abstracción de red en mi aplicación, y estaba funcionando bastante bien para todas mis solicitudes.

Agregué una nueva solicitud a otro servicio web (no el mío) y comenzó a arrojarme este error.

Fui a un patio de juegos y comencé desde cero construyendo una solicitud básica, y funcionó. Entonces comencé a acercarme a mi abstracción hasta que encontré la causa.

Mi implementación de abstracción tenía un error: estaba enviando una solicitud que debía enviar parámetros codificados en la url y también estaba llenando la NSURLRequest's HTTBodypropiedad con los parámetros de consulta. Tan pronto como lo quité HTTPBody, funcionó.


0

Recibí este error y también me di cuenta de que la aplicación Postman también estaba cayendo, pero estaba trabajando en la aplicación Advanced Rest Client (ARC) y en Android. Así que tuve que instalar Charles para depurar la comunicación y me di cuenta de que el código de respuesta era -1. El problema fue que el programador REST olvidó devolver el código de respuesta 200.

Espero que esto ayude a otros desarrolladores.


0

Siempre que tenga el error -1005, entonces deberá llamar a API nuevamente.

AFHTTPRequestOperationManager *manager = 
[AFHTTPRequestOperationManager manager];
[manager setSecurityPolicy:policy];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];

[manager POST:<example-url>
   parameters:<parameteres>
    success:^(AFHTTPRequestOperation *operation, id responseObject) {
      NSLog(@“Success: %@", responseObject);
  } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
      NSLog(@"Error: %@", error);
      if (error.code == -1005) {
          // Call method again... 
       }
  }];

Debe agregar su código para llamar a la función nuevamente. Asegúrese de que haya sido llamado método una vez, de lo contrario, es un ciclo recursivo de llamada.


0

Enfrenté el mismo problema al llamar usando el servidor de mi empresa desde la aplicación iOS 12 con un dispositivo físico. El problema era que el disco duro del servidor estaba lleno. Liberar espacio en el servidor resolvió el problema.

Encontré el mismo error en otra situación, creo que debido a un tiempo de espera no parametrizable a través de la API de red estándar proporcionada por Apple ( URLSession.timeoutIntervalForRequesty URLSession.timeoutIntervalForResource). Incluso allí ... hizo que el servidor respondiera más rápido resolvió el problema

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.