你好,这是我的离子信息,
我正在尝试从url返回json
对象的数据中获取数据。但是我正在使用@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://*/*" />
我的错误是
请让我知道这里需要进行任何配置吗?
答案 0 :(得分:0)
在离子中,
如果将浏览器用作测试环境,则必须启用 使用此功能后,浏览器中的跨域资源共享。
这是我解决此问题的方法,
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请求。否则您不会获取数据。