angular - 离子从 URL 获取数据
问题描述
你好,这是我的离子信息,
我正在尝试从它的返回json
对象的 url 获取数据。但是我正在使用@angular/http
. ionic serve
在浏览器( )中执行时,这是完美的工作。但是当我在真正的 android 设备上运行这个 apk 时,数据并没有从 url 中获取。这是我的代码,
this.http.get('https://example.com/api?search='+this.searchInput.value).map(res => res.json()).subscribe(data => {
this.postalCode = data.data;
},error => {
let alert = this.alertCtrl.create({
title: 'error',
subTitle: error,
buttons: ['Dismiss']
});
alert.present();
});
我的 config.xml,
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
我的错误是,
请让我知道需要在这里进行任何配置吗?
解决方案
在离子中,
如果您使用 broswer 作为测试环境,您必须在浏览器中启用跨域资源共享才能使用此功能。
这是我解决这个问题的方法,
import { Http } from '@angular/http';
import { HTTP } from '@ionic-native/http';
export class HomePage {
ServerData: any;
constructor(
private HttpAngularProvider: Http,
private HttpNativeProvider: HTTP,
.....
) {
this.getPostalCodeFromServer();
}
getPostalCodeFromServer() {
if (this.platform.is('android') || this.platform.is('ios')) {
this.HttpNativeProvider.get('your_url', {}, { "Content-Type": "application/json" })
.then(data => {
var dataReturn = JSON.parse(data.data);
this.ServerData = dataReturn.data;
})
.catch(error => {
});
} else {
this.HttpAngularProvider.get('your_url').map(res => res.json()).subscribe(data => {
this.ServerData = data.data;
}, error => {
});
}
}
在真实设备中,您需要通过 ionic-native 发出 http 请求。否则你没有收到数据。
推荐阅读
- javascript - 如何从 useEffect 读取更新为 useState 的数据?
- java - Spring Boot 应用程序 - 如何显示执行器信息端点中使用的依赖 JAR 版本
- vue.js - 在Vue中以mounted方法从资产加载本地字体
- ruby-on-rails - Rails Devise:Doorkeeper: 身份验证,更新字段(设计)
- rabbitmq - 如何使用 rabbitmq CLI Tools 为远程服务器上的用户设置主题权限
- security - geoIP2 如何在 apache2 中用于阻止国家/地区?
- c# - 如何实现嵌入图像资源的绑定?
- openstreetmap - 如何确保 geopy 中区域的身份?
- laravel-8 - Kreait Firebase 异常 Invalid Argument Exception 具有权限的 URI 的路径必须以斜杠“/”开头或在 laravel8 中为空
- javascript - WebGL - Three.JS 和 Blazor 的黑色画布和控制台错误