2017-09-25 73 views
0

我在iOS中使用Nativescript和Angular 4進行POST調用時出現了一個奇怪的問題。我在Android中測試了相同的代碼,並且工作完美。服務器不會註冊任何錯誤,但呼叫失敗。這是我使用的是現在的代碼:iOS 4中的角度4 httpd post調用失敗

... 
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"}); 
     } 
    ) 

這個應用程序顯示我There was an error trying to send the request, please try again later.消息,但沒有錯誤的服務器和奇怪的是,Android的正常工作。

我已經在Angular中啓用了enableProdMode(),但沒有運氣。

請幫忙嗎?

謝謝!

+0

因此呼叫永遠不會到達iOS上的服務器? – mast3rd3mon

回答

2

我們在Nativescript iOS + http連接上發生崩潰和掛起問題,直到昨天。我們切換到https連接我們的服務器的API和一切正在完美現在。

也許它與iOS上的安全/非安全連接有關?

嘗試切換到安全連接並查看會發生什麼。

如果你不能做到這一點,你可以添加以下到您的info.plist文件,以允許HTTP連接:

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

這就是發生了什麼事情,我將協議更改爲http並在iOS中工作,現在是時候決定是否切換到https或保留http幷包含該規則。謝謝你的時間。 – relez

+0

看來iOS 11不會允許http連接,所以我認爲使用https方式是一個安全的選擇。 –

+0

還有一件事,我試圖在Android中運行https呼叫,並得到了很多錯誤,其中之一是: System.err:導致:java.security.cert.CertificateException:java.security.cert.CertPathValidatorException:未找到證書路徑的信任錨點。 任何想法如何解決它? – relez