Ich habe mit einem Problem kämpfen, wo NSURLConnection
Anrufe sofort fehlschlagen. Das Gerät muss vollständig neu gestartet werden, oder der Flugmodus muss ein-/ausgeschaltet werden, um das Problem zu beheben. Das Neustarten der App (Streichen nach oben) allein hilft nicht.NSURLConnection fehlschlägt zufällig bis zum Neustart des Geräts
Einige Fakten:
-Alle URLs sind HTTPS, TLS 1.2 kompatibel mit Forward Secrecy. Es gibt keine Probleme mit ATS und iOS 9. Der Fehler ist seit iOS 7 aufgetreten und bleibt auf 9.2.
- Von der App werden keine Drittanbieter-Frameworks verwendet. Ich verwende nur native NSURLConnection
Anrufe, die immer funktionieren, außer wenn diese seltsame Situation auftritt.
- Keine Infrastruktur-/Netzwerkprobleme - andere Geräte in denselben Netzwerken (z. B. dasselbe WLAN) funktionieren gleichzeitig in derselben App. Zu/von 3G/Wifi zu gehen macht keinen Unterschied.
-Ich implementiere immer willCacheResponse
, um nil
zurückzugeben.
-Der Dienst wird auf AWS Elastic Beanstalk gehostet, daher wurde vorgeschlagen, dass es bei Änderungen der IP-Adresse zu einem DNS-Caching-Problem kommen könnte. Dies scheint mir unwahrscheinlich und sollte mehrere Fehler gleichzeitig auf verschiedenen Geräten auslösen habe noch nie gesehen.
-Die Methode heißt didFailWithError
, sofort, als gäbe es auf dem Gerät überhaupt keine Internetverbindung - alle anderen Apps funktionieren jedoch.
-Die Website, die die von der App verwendete API hostet, kann jederzeit ohne Probleme durchsucht werden. Die Website stellt die gleichen Anforderungen zum Abrufen von Daten.
Der zurückgegebene Fehlercode ist -1003, kCFURLErrorCannotFindHost
. Ich habe einen Thread auf Git verfolgt, der sich mit dem gleichen Problem beschäftigt, ohne Erfolg. https://github.com/AFNetworking/AFNetworking/issues/967
Ich versuchte mit NSURLRequestReloadIgnoringCacheData
für alle meine Anfragen, aber das hat nicht geholfen.
Mit dieser Information wird jemand sich interessieren, um eine Schätzung zu wagen, was ich falsch machen könnte? Ich habe die Bounty hinzugefügt, weil ich keine Ahnung habe, wie ich dieses Problem angehen soll - vor allem, weil es so inkonsequent ist. Und es ist definitiv kein berechtigter Fehler (das heißt, die Domain konnte nicht gefunden werden), da der Dienst funktioniert, während dies auf zufälligen Clients geschieht.
Ich erstelle meine Anfrage mit einer statischen Methode, die so aussieht. Es wurden einige nicht-öffentliche Informationen entfernt, aber im Grunde führt es nur eine POST-Anfrage mit JSON-Daten durch. [Controller getSQLHost]
gibt nur eine URL zurück - die Basisdomäne.
siehe in swift: http://iosdevcenters.blogspot.in/2015/12/nsurlrequest-in-swift.html –
@KiritModi Während ich schätze, dass Sie Zeit nehmen, um zu antworten, sehe ich nicht, was der Artikel zu tun hat mein Problem? – nickdnk
Können Sie mir URL geben? –