J'ai eu cette erreur plusieurs fois dans mon projet et cela m'irrite beaucoup car j'ai une connectivité Internet complète bien que j'obtienne cette erreur à plusieurs reprises. EdwfR.png "rel =" nofollow noreferrer ">
Quelle est la solution ...?
J'utilise
Swift - 3.3
Alamofire - 4.7.3
Code d'appel de l'API:
class func post(_ URL: String, withParams params: [String : AnyObject], onView parentView: UIViewController, hnadler completion: @escaping ([AnyHashable: Any]!) -> Void) { var URLString = String() URLString = APIConstants.kServerURL + URL var headers = [String: String]() headers["Content-Type"] = "application/x-www-form-urlencoded" Alamofire.request(URLString,method: .post, parameters: params , headers : headers) .validate(contentType: ["application/vnd.api+json"]) .responseJSON { response in switch response.result { case .success( _): var completionVarible = [NSObject : AnyObject]() completionVarible = response.result.value as! [AnyHashable: Any]! as [NSObject : AnyObject] completion(completionVarible) case .failure(let error): self.handleFailureResponse(Error: error as NSError?, parentView: parentView) } } }
3 Réponses :
Je ne sais pas exactement pourquoi cette erreur se produit mais j'ai également rencontré cette erreur, j'ai donc mis une solution. Cette erreur a un code d'erreur unique. Vérifiez donc ce code d'erreur et ignorez l'alerte là-bas ou vous pouvez à nouveau essayer cet appel d'API si vous obtenez ce code d'erreur.
Si l'alerte apparaît immédiatement, vous pouvez essayer de changer la politique de cache en .reloadIgnoringCacheData
Où dois-je changer de politique?
Je trouve une solution à ce problème si vous utilisez Alamofire.
Commencez par importer Alamofire dans votre classe commune, sinon vous pouvez créer une classe distincte pour vérifier la connexion Internet.
importer Alamofire
if !Connectivity.isConnectedToInternet() { ServiceHandler.ShowAlert(message: "Check your internet connectivity.", title: "Error", parentView: self) //This is my comman method for display alert. return }
Appelez la méthode ci-dessous avant d'appeler l'API
class Connectivity { class func isConnectedToInternet() ->Bool { return NetworkReachabilityManager()!.isReachable } }
J'ai appliqué la même logique pour ce problème, mais celui-ci n'aidera pas. vous obtiendrez la même erreur.
Oui, j'obtiens maintenant une erreur réseau avant l'appel d'API.
Ajoutez votre code pour vérifier
var URLString = String () URLString = APIConstants.kServerURL + URL var headers = [String: String] () headers ["Content-Type"] = "application / x-www-form-urlencoded" Alamofire.request (URLString, méthode : .post, paramètres: params, headers: headers) .validate (contentType: ["application / vnd.api + json"]) .responseJSON {réponse dans}
J'ai appelé api comme normalement nous implémentons
Modifiez votre question avec ce code
@ParthPatel nous montre ce qui se passe à la fin de l'appel Alamofire, je ne crois pas qu'Alamofire affiche les erreurs sous forme d'alertes ...
Veuillez vérifier le code que j'ai modifié ma question avec le code.
@ParthPatel et que se passe-t-il à la fin de
post
?@RobertDresler c'est renvoyer les données de réponse de l'API.
@RobertDresler Lorsque cette erreur se produit. Il n'exécute que les cas d'échec.
Essayez en cas d '
échec
case printerror
, qu'obtenez-vous? Je crois que vous définissez La connexion réseau a été perdue chaque fois qu'une erreur se produit, vous ne pouvez pas trouver une erreur ...@RobertDresler Veuillez vérifier le code que j'appelle une méthode en échec et cette méthode n'affiche que l'alerte qui est en erreur! .LocalizedDescription.