Ho un problema strano quando consumo la mia API dalla mia app. A volte, per nessuna ragione, la richiesta non è solo inviato, e non riesce alla fine del time-out con il seguente errore:Richiesta non inviata
Error Domain=NSURLErrorDomain Code=-1001 "The request timed out."
Ho provato molti API quali NSURLConnection
delegati, NSURLSession
e NSURLConnection.sendSynchronousRequest
senza successo.
Ecco un esempio di progetto che ho fatto per evidenziare il problema. ConnectionBugApp
Ecco i passaggi per riprodurre:
- Eseguire l'applicazione in Xcode e fermare il debug solo così l'applicazione è sul telefono
- Aprire l'applicazione, fare clic su Verifica connessione (ci riesce, ruota di carico subito dopo)
- Vai ad altre app come facebook/twitter/giochi di rete (alcuni sono un po 'pesanti) e passa in modalità aereo alcune volte
- Torna alla mia app e fai clic su Test di connessione (ruota di caricamento mai si ferma)
Alcuni dettagli che potrebbero aiutare:
Se io uso il mio IP del server al posto del mio nome a dominio, riesce
Problema appare solo quando sulla rete LTE/4G
Qualsiasi idea o soluzione alternativa sarebbe molto apprezzata! Sentiti libero di chiedere maggiori dettagli.
Grazie
EDIT
ho modificato la descrizione molto da quando ho postato (sperando di rendere più pulita e più chiara), mi dispiace se alcune risposte o commentano don' ha davvero più senso.
Se si utilizza l'API NSURLSession, il problema si riproduce? –
@LeoNatan, sì ho lo stesso identico problema con 'NSURLSession' – streem
Che cosa vedi sul lato server? Vedi il server accetta una connessione client o non raggiunge nemmeno il server? Direi che sembra da qualche parte nel tuo server, stai lasciando cadere la connessione. Forse un firewall. –