gpt4 book ai didi

android - 通过 $http 加载 JSON。适用于浏览器但不适用于 Android(设备或模拟器)

转载 作者:搜寻专家 更新时间:2023-11-01 07:48:48 24 4
gpt4 key购买 nike

我刚开始学习 ionic 框架和 angular js 来开发一个 android 应用程序。我想编写 APOD 查看器(=每日天文图片)。

我执行一个 api 调用:https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY&hd=true

返回一个 JSON 字符串。然后我查看图片(来自“hdurl”字段)。

当我在浏览器中尝试时,一切都按预期工作。但是当我构建应用程序并在模拟器或手机上运行它时,似乎我没有得到 $http() 调用的答案。

这是我的代码:

$scope.apodImgUrl = "img/loading.gif";
$scope.apiUrl = "https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY&hd=true";
$http({
method: "GET",
url: $scope.apiUrl
}).then(function (response){
if(response == null) {
showError($location, "No Data", "Received nothing!");
}else{
if(response.data.media_type == "image") {
$scope.apodImgUrl = response.data.hdurl;
}else{
showError($location, "No Image", "Only Images are Supported (so far!)");
}
}
},function (errorResponse) {
showError($location, "HTTP GET Error", errorResponse);
});

我没有收到图像错误。它只显示我的 loading.gif。

我已经使用了cordova白名单插件并添加了:

<access origin="*" subdomains="true"/>
<allow-navigation href="*" />
<allow-intent href="*" />

到我的 config.xml。

我也曾尝试将代理添加到我的 ionic.project 文件中:

"proxies": [
{
"path": "/planetary/apod",
"proxyUrl": "https://api.nasa.gov/planetary/apod"
}
]

我也尝试了很多不同的组合如何调用 $http。 (例如 $http.get().success().error()$http.get().then() 或普通的 $http( ))。结果相同。

有什么想法吗?谢谢。

最佳答案

请在您的项目中添加白名单插件。

cordova plugin add cordova-plugin-whitelist --save

这将在您的 Android 设备中启用 http 请求。还要检查你的 android AndroidManifest.xml。它需要这个权限

<uses-permission android:name="android.permission.INTERNET" />

最后在您的 config.xml 中添加这些行

<access origin="*"/>
<allow-intent href="*"/>
<allow-navigation href="*"/>

那么您的 http 请求将正常工作,谢谢。

关于android - 通过 $http 加载 JSON。适用于浏览器但不适用于 Android(设备或模拟器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38422405/

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