Http 请求仅在发布 Android APK 时失败

2024-02-17

我正在努力让我的应用程序在 Android APK 版本上运行,唯一失败的情况是生成和签名 apk。所有的http请求都不起作用。 (服务器在SSL下运行)

我已经尝试过的所有场景:

  • ionic serve-> 工作正常。
  • ionic cordova run android --device-> 工作正常。
  • 也适用于模拟器。

生成 iOS 版本也可以正常工作:

  • ionic cordova build ios.
  • 在 Xcode 上,运行针对真实设备的构建。
  • 在 Xcode 上,将其存档并上传到 Itunesconnect,然后在 Apple 接受后从 AppStore 下载。

所以,它不起作用的唯一情况是当我尝试通过以下方式生成它的apk时ionic cordova build android --prod --release并签字。

Google Play 也接受新的 APK,因此包标志完全没有问题。

由于它适用于 iOS 并直接在 Android 设备上运行,因此这不是 CORS 或 HTTPS 证书问题。

代码:

Login.ts 的片段:

this.userService.loginUser(this.user).then(
            (data) => {
                let response = data.json();
                loading.dismiss().then(loadData => {
                    if (response.access_token) {
                        this.global.access_token = response.access_token;
                        this.getUserData();
                    }
                });
            }, err => {
                let error = err.json();
                loading.dismiss().then(response => {
                    if (error.message) {
                        this.showToast(error.message, 3000, 'bottom');
                    }
                });
            }
        );

userService.loginUser方法:

loginUser(data) {
    let headers = new Headers();
    headers.append('Access-Control-Allow-Origin', '*');
    headers.append('auth-token', '*');

    return this.abs.post('/authenticateMobile',
        {
            login_ds_email: data.email,
            login_ds_password: data.pass
        }, headers);
}

Where abs is:

constructor(http) {
    this.abs = new ApiService(http);
}

ApiService.post方法:

public post(api, params, header): any {
    if (!header) {
        header = this.getHeaders();
    }
    let options = new RequestOptions({headers: header});
    let url = this.global.urlGlobal + api;
    return this.http.post(url, params, options).toPromise();
}

当我触发“登录”按钮并发出请求时,应用程序会卡住。服务器不会抛出异常,因此加载屏幕将永远显示。

我已经没有解决方案了,希望你们能帮助我。

离子信息:

global packages:

@ionic/cli-utils : 1.4.0
Cordova CLI      : 6.4.0
Gulp CLI         : CLI version 3.9.1 Local version 3.9.1
Ionic CLI        : 3.4.0

local packages:

@ionic/app-scripts              : 1.3.0
@ionic/cli-plugin-cordova       : 1.4.0
@ionic/cli-plugin-gulp          : 1.0.1
@ionic/cli-plugin-ionic-angular : 1.3.1
Cordova Platforms               : android 6.0.0 ios 4.3.1
Ionic Framework                 : ionic-angular 3.0.1

System:

Node       : v7.8.0
OS         : macOS Sierra
Xcode      : Xcode 8.3.3 Build version 8E3004b
ios-deploy : 1.9.0
ios-sim    : 5.0.6
npm        : 5.0.3

我前段时间也遇到过同样的问题。就我而言,问题是证书无效。在我看来,该证书在浏览器(chrome 甚至显示绿色锁)、iOS 和 Android 上测试时看起来都很好。但我的 Android 用户抱怨它对他们不起作用。

经过几个小时的研究,结果发现对具有无效证书的网站的请求只是被默默地丢弃,这意味着没有任何反馈。没有错误,什么都没有。 (如果我没记错的话,js 代码只是停止执行而不返回或执行任何回调。)这种情况仅在发布模式下构建时发生。

这里描述了一种解决方法:

http://ivancevich.me/articles/ignoring-invalid-ssl-certificates-on-cordova-android-ios/ http://ivancevich.me/articles/ignoring-invalid-ssl-certificates-on-cordova-android-ios/

处理它的最佳方法是将证书固定在您的应用程序中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Http 请求仅在发布 Android APK 时失败 的相关文章

  • Android SyncAdapter 回调

    我已经按照 SDK 中的 SimpleSyncAdapter 示例项目的思路实现了 SyncAdapter AccountManager 和私有 ContentProvider 一切都运转良好 现在 当从远程服务器下载了设置了特定标志的新行
  • 未向 HAL 提供足够的数据,预期位置

    我在 Android Studio 中收到此错误 我只想在按下按钮时打印文本 我收到以下错误 每次按下按钮时都会出现该错误 如果我取消注释掉意图 它也可以正常工作 但是我拥有的代码越多 错误更改就越多 我实际上不确定这是真正的错误 我这么说
  • 此 TableLayout 布局或其 LinearLayout 父级无用如何解决此警告

    我在 Linearlayout 中有 tablelayout 但它向我显示了此警告消息这个TableLayout布局或其LinearLayout父级是没有用的 如何克服这个警告可以帮助我 提前致谢
  • 带有真实颜色的图标显示黑色背景

    使用新主题 Theme MaterialComponents 在按钮上放置图标时会显示一个黑框 如何放置具有真实颜色的图标
  • Android - 打开 FB 本机应用程序时未找到处理 Intent 的 Activity

    我正在尝试从通知中收到的网址打开特定帖子上的 FB 应用程序 它在大多数设备上都能完美运行 但在三星 S7 上大多会崩溃 我的简单代码 String url fb post
  • 在android中使用短信管理器发送批量短信

    我正在使用以下方式向近 90 100 个号码发送短信SmsManager 我正在从文件中读取数字并将数字传递给 sendtextmessage 函数 如下所示 String nos this array contains mobile no
  • Android OpenGL ES 支持无处不在?

    我需要了解如果我选择在 OpenGL 而不是 android graphics 中的 android 原生 2D 图形 API 进行绘图 我会损失多少潜在安装量 android 文档似乎暗示 OpenGL ES API 基本上在所有手机上都
  • 如何将 FAB 转换为弹出菜单?

    根据材料设计指南 https material google com components buttons floating action button html buttons floating action button transit
  • Phonegap Geolocation:应用程序关闭时跟踪位置

    我已经按照教程进行了移动 tutsplus http mobile tutsplus com tutorials mobile web apps build an exercise tracking app persistence grap
  • Android 模拟器问题

    当我启动模拟器时 我遇到很多问题 错误 HttpConnectionApp emulator 5554 disconnected Cancelling net paxcel http HttpConnectionApp activity l
  • Flutter 图像选择器明确请求许可

    图像选择器包说 无需配置 该插件应该开箱即用 不再需要添加 android requestLegacyExternalStorage true 作为属性 AndroidManifest xml 中的标记 如 image picker 所示
  • 针对不同处理器架构的 Gradle android 构建

    我想使用 Gradle 为 4 个不同的 Android CPU 处理器架构 armeabi armeabi v7a x86 mips 构建 4 个单独的 apk 我有为 4 个 CPU 架构构建的本机 OpenCV 库libs folde
  • Android 以编程方式停止 toast 通知?

    有没有办法以编程方式停止 Toast 消息 假设我有一个按钮 单击它可以滚动 toast 消息 并且在 onclick 事件中我想停止队列中的所有消息并只显示新消息 我该怎么做 我的代码的简化版本如下 代码 public class Hel
  • Android minSdkVersion 与 Flutter(v2.8.1)

    我已经安装了 firebase 包 据我们所知minSdkVersion 19被推荐 所以 我想做这个过程 但是 我看到这一行包含在android app build gradle file minSdkVersion flutter mi
  • Android:非键盘输入法

    我正在尝试为 Android 创建一个不是传统键盘 对应于不同字母的按键行 的 IME 并且我无法找到有关如何执行此操作的有用资源 因为 SDK 中的所有代码示例都使用键盘 API它是内置函数 我在 XML 文件中设计了 IME 界面 就好
  • 如何在 G-WAN 中添加 HTTP/2

    我想知道是否可以通过使用解决方案 nghttp2 https nghttp2 org https nghttp2 org 很抱歉这么晚才回答 出于某种原因 Stackoverflow 没有通知我们这个问题 我之所以找到它只是因为收到了更新的
  • 无法 HEAD 'https://jcenter.bintray.com/com/facebook/react/react-native/maven-metadata.xml'。从服务器收到状态代码 502:网关错误

    我正在尝试为 Android 构建我的 React Native 项目 并在 Windows 上收到以下错误 但它在 Mac 上工作 react native run android info Running jetifier to mig
  • 使用 Android 地图 v2 进行自由绘图

    我有一个地图应用程序 使用新的 v2 Google Maps API for Android 我想做的是允许用户在地图上沿着手指的路径画一条线 我知道我可能需要一个按钮来启用 禁用此功能 因为它显然需要禁用平移 缩放控件 一旦用户画了线 我
  • 获取Android联系人排序首选项

    在 Android 的 联系人 gt 设置 中 我们有 列表排序依据 和 查看联系人姓名 选项 有什么方法可以在另一个应用程序中获取这些首选项吗 这意味着我的应用程序有我自己版本的联系人列表 我需要这些才能对其进行相应的排序 int sor
  • 收到 GCM 通知时启动应用程序

    我有 GCM 通知实施 我知道客户端应用程序无论处于前台 后台还是终止状态都会收到通知 我想知道的是 当应用程序处于终止状态时 如何在收到通知时启动我的应用程序 在消息接收器中 我执行以下操作 final Intent notificati

随机推荐

  • 使用 @ViewScoped 时出现 java.io.NotSerializedException

    如果我使用 ViewScoped在JSF中 则出现以下异常 java io NotSerializableException com solv basics Basics java io ObjectOutputStream writeOb
  • 在每个 url 末尾添加尾部斜杠?

    我这里有一个小问题 我需要在我正在处理的网站中每个网址的末尾添加一个尾部斜杠 我将网站内的所有链接定义为带有尾部斜杠 如下所示 a href register Register a 虽然这工作正常 但仍然存在一个小问题 它与调用 Redir
  • 如何让ggplot2绘图更漂亮?

    I have generated the following plot using the R code that follows it ggplot lengths aes length fill library geom density
  • 屏幕旋转时选项卡更改 [Android]

    您好 我有带有 4 个选项卡的 Android 应用程序 假设 tab1 tab2 tab3 tab4 当活动启动时 默认选项卡是 tab1 当我切换到任何其他选项卡 选项卡 2 选项卡 3 或选项卡 4 并更改屏幕方向时 它总是重置为默认
  • 64 位机器/操作系统上的 32 位操作与 64 位操作

    哪个操作 即 32 位操作或 64 位操作 例如屏蔽 32 位标志或 64 位标志 在 64 位机器上会更便宜 由于您没有指定架构 我只能建议一个一般答案 因为它取决于操作和所讨论的处理器架构 一旦 CPU 寄存器中有数据 大多数操作通常会
  • 2D Python 游戏编程的工具包选项 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将项目从 .NET 4.0 升级到 .NET 4.5 后失败 => 找不到类型或命名空间名称“MaxLength”/“Column”

    我有一个针对 Net 4 0 和实体框架 4 3 1 的工作网站 安装 Net 4 5 使用 Visual Studio Express 2012 后 我可以在 Visual Web Developer Express 2010 上编译网站
  • 将主要参数传递给 gui 库的 init 函数

    当涉及到 Qt 和 GTK 等库中的库初始化时 您必须将主要参数传递到初始化库的函数中 为什么 图书馆用它们做什么 为了方便起见 Qt 和 GTK 都旨在响应某些命令行标志 两者也都响应各种环境变量 您不一定have将 argv 和 arg
  • 简单的 jQuery ajax 问题是否成功返回数据?

    嗨 我有以下内容 ajax type POST url global pathPrefix services brochure asmx ShowPostRequest data parkIds input ids val success
  • wpf使用网格作为itemshost自动将多个项目堆叠在单个“单元格”中

    我将项目控件绑定到数据源并使用网格作为我的项目主机 我希望让这些项目将自己定位到网格中的正确单元格中 我可以做到这一点 并且也将自己堆叠起来 这样它们就不会全部彼此重叠 我不知道如何将这些项目插入到stackpanel 或网格中的其他面板
  • django控制器在views.py中是什么

    我已经遵循了几个 django 教程 我不知道为什么控制器存储在名为views py 的文件中 我对这个文件名感到困惑 我正在寻找 MVC 开发 django 中还有其他用于 真实 控制器的文件吗 名字views py是一个错误 从架构的角
  • 如何在 TypeScript 中声明具有属性的函数的类型?

    我在 TypeScript 网站上阅读了一些文档 但不确定我是否理解正确 在这种情况下 我使用的包没有可用的 TypeScript 类型 prismic reactjs 所以我试图自己声明类型 这样我就可以摆脱困扰我的项目的错误 那么 作为
  • “null this”是否可以接受扩展方法的使用? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Rails 定期计费 - 我有哪些选择?

    在开始之前 我想知道我的所有选择是什么 如果可能的话 它们的优点和缺点 我知道的两个正在使用 ActiveMerchant 或 paypal recurring gem 但它们会满足这些要求吗 能够适应按月和按年计费 能够暂停 取消帐户等
  • 20 多天后由于碎片而导致 Android 出现内存不足错误

    我制作了一个在咖啡机上运行的应用程序 20 多天后 可能是 60 多天 具体取决于使用情况 发生 OutOfMemoryError java lang OutOfMemoryError Failed to allocate a 604 by
  • 在 Android 上滑动即可切换标签,例如 YouTube/Google Music 应用

    在最新版本的应用程序中 谷歌实现了一种非常酷的方式 可以在选项卡之间滑动而不是单击选项卡标题 我想知道是否有人对如何做到这一点有更具体的想法 以下是一些想法 欢迎批评 我最初的想法是这不是一个标准TabActivity举办儿童活动 事实上
  • 使用 ftrace 和 kprobes 捕获用户空间程序集(通过使用虚拟地址转换)?

    对于这篇较长的帖子表示歉意 我无法以较短的方式表述它 另外 也许这更适合 Unix Linux Stack Exchange 但我会首先在这里尝试 因为有一个ftrace tag 无论如何 我想观察用户程序的机器指令在完整的上下文中执行fu
  • 方法“[]”在 null 上调用。接收者:空

    为了隔离问题 我创建了一个新代码 一个新程序和一台新机器 相同的结果 它只是不想打印 quotes 之后且具有 anythingPrice 的任何值 我再次可以给您一个临时密钥 您可以完全运行代码 在你身边 请告诉我 import dart
  • AS3 中 onReleaseOutside 最简单的实现?

    我是 ActionScript 2 的长期用户 现在开始使用 ActionScript 3 我缺少的一件事是复制 AS2 MovieClip onReleaseOutside 功能的简单方法 几乎总是有必要实现这个事件 否则你会得到一些有趣
  • Http 请求仅在发布 Android APK 时失败

    我正在努力让我的应用程序在 Android APK 版本上运行 唯一失败的情况是生成和签名 apk 所有的http请求都不起作用 服务器在SSL下运行 我已经尝试过的所有场景 ionic serve gt 工作正常 ionic cordov