gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:24:52 26 4
gpt4 key购买 nike

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

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

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

也可以很好地生成 iOS 版本:

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

因此,唯一不起作用的情况是当我尝试通过 ionic cordova build android --prod --release 生成它的 apk 并对其进行签名时。

Google Play 也接受新的 APK,所以包签完全没有问题。

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

代码:

login.ts fragment :

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

abs 是:

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();
}

当我按下“登录”按钮并发出请求时,应用程序卡住了。服务器没有抛出异常,因此加载屏幕会一直显示。

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

ionic 信息:

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 代码只是停止执行而没有返回或执行任何回调。)只有在 Release模式下构建时才会发生这种情况。

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

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

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

关于android - Http 请求仅在发布 Android APK 时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44833534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com