我正在尝试用capacitor把我的webapp移植到android上,我已经把除了一个部分以外的所有部分都弄明白了。
每当我想从数据库/服务器获取内容时,我都会使用fetch。这在浏览器中非常有效--无论是在桌面还是移动设备上。但当我通过Android Studio运行应用时,fetch就失败了,并显示以下错误消息
E/电容器/控制台:文件:http://localhost/-第0行-消息:未捕获(承诺中)类型错误:无法获取
在同一个设备上,但在浏览器中它工作得很好。
我尝试使用以下内容添加 * network-security-config. xml *
<network-security-config>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">http://5e4ce8849526.ngrok.io</domain>
</domain-config>
</network-security-config>
</network-security-config>
我见过其他人转换成HTTPS,但我也不能让它工作。这是在学校的项目,由于在几天内,所以一个耗时的过程是不是我需要的。
会不会是ngrok引起的?
这是加载时运行的fetch函数
let url = ' http://5e4ce8849526.ngrok.io'
function autoLogin(cb) {
let key = localStorage.getItem('userToken');
if(key == null || key == '') {
return 'No key stored';
} else {
fetch(url + '/informatik/readingapp/restapi/api/users/login.php', {
method: 'post',
headers: {
'Authorization': 'Bearer ' + key
},
})
.then(res => res.json())
.then((data) => {
console.log(data)
switch(data.message) {
case 'Password not verified':
presentAlert('Forkert kodeord', 'Har du skrevet dit kodeord rigtigt?')
break;
case 'Password verified':
nav.push('nav-home')
let tk = data.jwt.token
let usnm = data.username
let usid = data.id
cb(tk, usnm, usid);
break;
case 'No login data':
presentToastHome('Intet gemt login, desværre :(')
break;
}
})
}
}
我将感激任何帮助:)
1条答案
按热度按时间ss2ws0br1#
尝试添加
<Application android:usesCleartextTraffic="true">
在您的应用的AndroidManifest.xml中。
自Api29以来,需要在Android上执行http请求。