J'essaie de charger une image depuis l'URL sur l'iphone. L'image est là et je peux l'ouvrir dans un safari avec le même lien, mais pas dans l'application
Error Domain=NSURLErrorDomain Code=-1003 "A server with the specified hostname
could not be found." UserInfo={NSUnderlyingError=0x17024f810
{Error Domain=kCFErrorDomainCFNetwork Code=-1003 "(null)"
UserInfo={_kCFStreamErrorCodeKey=50331647, _kCFStreamErrorDomainKey=6147928288}},
NSErrorFailingURLStringKey=https://........, NSErrorFailingURLKey=https://.........
Code de demande:
func downloadImage(userEmail: String, onCompletion: @escaping (UIImage) -> Void) {
print("Download Started")
let route = "\(baseURL as String)\(userEmail as String)\(baseURLparameters as String)"
let url = URL(string: route)
getDataFromUrl(url: url!) { (data, response, error) in
guard let data = data, error == nil else {
print("===failed:", error ?? "dunno")
print("===url:", url?.absoluteString ?? "dunno")
return
}
print(response?.suggestedFilename ?? url!.lastPathComponent )
print("Download Finished")
DispatchQueue.main.async() { () -> Void in
onCompletion(UIImage(data: data)!)
}
}
}
Le nom d'hôte dans votre URL est incorrect car le message que vous récupérez indique explicitement qu'il ne peut pas trouver un serveur portant ce nom d'hôte.
La cause la plus probable est que vous avez oublié de mettre une barre oblique entre l'URL de base et le courrier électronique, par exemple. si votre URL de base est
http://example.com
et votre email est
[email protected]
Vous construisez
http://[email protected]
Placez un point de rupture sur la ligne qui crée l'URL et inspectez la chaîne à partir de laquelle elle tente de la créer. Ce sera probablement alors assez évident de comprendre exactement ce que vous faites mal.
Cette erreur suggérerait un problème lié au DNS. Il existe un problème avec le serveur DNS atteint via notre réseau WiFi. Nous changeons donc de serveur DNS et corrigeons ce problème. Supprimez le cache et réessayez.
S'il existe une URL, vous pouvez obtenir (au lieu de POST) sur le même serveur.
Et aussi, désactiver le wifi et utiliser la 3G fait disparaître l'erreur.
Cela s'est produit dans mon cas, car l'un des chemins de nos serveurs de développement était interne à notre pare-feu/intranet/VPN et que mon appareil n'était pas connecté à notre réseau Wi-Fi interne.
Frustrant et déroutant parce que cela fonctionnait dans le simulateur et non sur un appareil.