0

我在 iOS 中使用 Nativescript 和 Angular 4 进行 POST 调用时遇到了一个奇怪的问题。我已经在 Android 中测试了相同的代码并且运行良好。服务器未注册任何错误,但调用失败。这是我现在使用的代码:

...
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 工作正常。

我已经启用了enableProdMode()Angular 并且没有运气。

请问有什么帮助吗?

谢谢!

4

1 回答 1

3

直到昨天,我们在 Nativescript iOS + http连接上遇到了崩溃和挂起的问题。我们为服务器的 API 切换到https连接,现在一切正常。

也许它与 iOS 上的安全/非安全连接有关?

尝试切换到安全连接,看看会发生什么。

如果您不能这样做,请尝试将其添加到您的 info.plist 文件以允许 http 连接:

<key>NSAppTransportSecurity</key>
<dict>
  <!--Include to allow all connections (DANGER)-->
  <key>NSAllowsArbitraryLoads</key>
      <true/>
</dict>
于 2017-09-25T15:28:04.187 回答