IOS中调用rest服务无捕获HTTP响应代码401

IOS中调用rest服务无捕获HTTP响应代码401,ios,iphone,rest,http,ionic3,Ios,Iphone,Rest,Http,Ionic3,我在通过iOS调用rest服务时遇到了麻烦,因为在Android中,一切都正常。当我通过登录名和密码进行呼叫时,服务器返回状态401(通过邮递员/安卓/爱奥尼亚服务),现在,当我通过iOS进行呼叫时,它不会返回任何内容(我将一个日志放在服务器上,它标识并显示返回的内容)它不会在subscribe中接收任何类似return的内容,也不会在http.get的catch中接收任何类似return的内容,因此我无法捕获错误并进行处理 总结API的调用是由iOS进行的,但当订阅中的错误不在捕获范围内时,返

我在通过iOS调用rest服务时遇到了麻烦,因为在Android中,一切都正常。当我通过登录名和密码进行呼叫时,服务器返回状态
401
(通过邮递员/安卓/爱奥尼亚服务),现在,当我通过iOS进行呼叫时,它不会返回任何内容(我将一个日志放在服务器上,它标识并显示返回的内容)它不会在subscribe中接收任何类似return的内容,也不会在http.get的catch中接收任何类似return的内容,因此我无法捕获错误并进行处理

总结API的调用是由iOS进行的,但当订阅中的错误不在捕获范围内时,返回401。但是,当我没有Internet时,它会处于“捕捉声音”状态
0

IOS中的响应(失败)不返回捕获:

在控制台xCode上打印时出错:

CredStore - performQuery - Error copying matching creds.  Error=-25300, 
query={
    class = inet;
    "m_Limit" = "m_LimitAll";
    ptcl = htps;
    "r_Attributes" = 1;
    sdmn = "api.site.com.br";
    srvr = "api.site.com.br";
    sync = syna;
}
android(OK)返回捕获中的响应:

过程:

我在rest中调用API,作为类型GET,并在base64授权中作为参数传递登录名和密码。 当我发送正确的登录名和密码时,它将返回状态
200
,并带有有效的令牌。但是当发送了无效的登录名和密码时,服务器返回状态
401
(这没问题,我做了邮递员测试)

包装:

        "@angular/common": "4.1.2",
        "@angular/compiler": "4.1.2",
        "@angular/compiler-cli": "4.1.2",
        "@angular/core": "4.1.2",
        "@angular/forms": "4.1.2",
        "@angular/http": "4.1.2",
        "@angular/platform-browser": "4.1.2",
        "@angular/platform-browser-dynamic": "4.1.2",
        "@ionic-native/core": "3.7.0",
        "@ionic-native/in-app-browser": "^3.10.3",
        "@ionic-native/onesignal": "^4.3.0",
        "@ionic-native/splash-screen": "3.7.0",
        "@ionic-native/status-bar": "3.7.0",
        "@ionic/storage": "2.0.1",
        "cordova-android": "^6.2.3",
        "cordova-ios": "^4.4.0",
        "cordova-plugin-console": "^1.0.7",
        "cordova-plugin-device": "^1.1.6",
        "cordova-plugin-inappbrowser": "^1.7.1",
        "cordova-plugin-splashscreen": "^4.0.3",
        "cordova-plugin-statusbar": "^2.2.3",
        "cordova-plugin-whitelist": "^1.3.2",
        "ionic-angular": "3.3.0",
        "ionic-plugin-keyboard": "^2.2.1",
        "ionicons": "3.0.0",
        "onesignal-cordova-plugin": "^2.2.1",
        "rxjs": "5.1.1",
        "sw-toolbox": "3.6.0",
        "zone.js": "0.8.10"
代码:

getToken(登录,senha):承诺{ 返回新承诺((解决、拒绝)=>{ 让选项=新的请求选项({ 标题:新标题({ “授权”:“基本”+btoa(登录+”:“+senha), “缓存控制”:“无缓存” }) }); 这是http.get(“https://subdominio.site.com.br/api/login“,选项) .map(res=>res.json()) .订阅(数据=>{ 控制台错误(“订阅确定->”+数据); 解析(数据); },错误=>{ console.error(“订阅错误->”+错误); 拒绝(错误); }); }); } 爱奥尼亚信息:


有人遇到过这个问题吗?

我也遇到过类似的问题,似乎无法解决。到目前为止,你找到了解决方案吗?嗨,问题已经解决了,我必须添加以下插件,并用它制作“useBasicAuth”火焰。我的问题是,iOS连接线中有一个bug,很久以前就存在,没有人能解决它。发生这种情况是因为我正在调用基本类型的身份验证服务,并且在该服务的标题中返回,它会在浏览器中打开对话框。但是在IOS中出现了错误。在头上没有这个家伙的情况下进行测试。
getToken(login, senha): Promise<{}> {
    return new Promise((resolve, reject) => {
      let options = new RequestOptions({
        headers: new Headers({
          'Authorization': 'Basic ' + btoa(login + ":" + senha),
          "cache-control": "no-cache"
        })
      });
      this.http.get("https://subdominio.site.com.br/api/login", options)
        .map(res => res.json())
        .subscribe(data => {
          console.error("Subscribe OK -> " + data);
          resolve(data);
        }, error => {
          console.error("Subscribe error ->" + error);
          reject(error);
        });
    });
  }