2017-09-25 6 views
0

J'ai un problème étrange dans un appel POST dans iOS en utilisant Nativescript et Angular 4. J'ai testé le même code dans Android et fonctionne parfaitement. Le serveur n'enregistre aucune erreur mais l'appel échoue. Voici le code que je utilise en ce moment:Angular 4 httpd post appel échoue dans iOS

... 
import { Http, Headers, Response, RequestOptions } from "@angular/http"; 
... 

let headers = new Headers(); 
headers.append("Content-Type", "application/x-www-form-urlencoded"); 
let options = new RequestOptions({ headers: headers }); 
let body = 
    "Username=" + this.username 
    +"&Password=" + this.password; 
this.http.post("http://myserver.com/api/login", body, options) 
    .map(result => result.json()) 
    .subscribe(
     result => { 
      this.loader.hide(); 
      if (result.Authenticated) { 
       // Do something... 
      } 
      else { 
       Dialogs.alert({title: 'Error', message: "Username and/or password are incorrect.", okButtonText: "Close"}); 
      } 
     }, 
     error => { 
      Dialogs.alert({title: 'Error', message: "There was an error trying to send the request, please try again later.", okButtonText: "Close"}); 
     } 
    ) 

L'application me montre There was an error trying to send the request, please try again later. message, mais il n'y a pas d'erreur dans le serveur et la chose curieuse est que Android fonctionne bien.

J'ai activé le enableProdMode() en Angulaire et pas de chance.

Une aide s'il vous plaît?

Merci!

+0

si l'appel n'a jamais atteint le serveur sur ios? – mast3rd3mon

Répondre

2

Nous avions des problèmes d'écrasement et de suspension sur Nativescript iOS + http connexions jusqu'à hier. Nous sommes passés à https connexions pour l'API de nos serveurs et tout fonctionne parfaitement maintenant.

Peut-être que cela a quelque chose à voir avec les connexions sécurisées/non sécurisées sur iOS? Essayez de passer à une connexion sécurisée et voyez ce qui se passe.

Si vous ne pouvez pas le faire, essayez d'ajouter ceci à votre fichier Info.plist pour autoriser les connexions http:

<key>NSAppTransportSecurity</key> 
<dict> 
    <!--Include to allow all connections (DANGER)--> 
    <key>NSAllowsArbitraryLoads</key> 
     <true/> 
</dict> 
+1

Cest exactement ce qui se passe, j'ai changé le protocole à http et a travaillé dans iOS, maintenant il est temps de décider si nous passons à https ou garder http et inclure cette règle. Merci pour votre temps. – relez

+0

Il semble que iOS 11 n'autorise pas les connexions http, alors je pense que le pari https est un pari sûr. –

+0

Encore une chose, j'ai essayé d'exécuter un appel https dans Android et j'ai eu beaucoup d'erreurs, l'un d'eux est: System.err: Causé par: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Ancre de confiance pour le chemin de certification introuvable. Une idée de comment y remédier? – relez