Ionic POST: 本机 HTTP returns 错误 null
Ionic POST: native HTTP returns ERROR null
我正在尝试让一个简单的应用程序在 iOS 上与 Ionic 一起工作。
该应用程序包含一个简单的按钮,用于使用函数 login(username, password) 向我服务器上的 servlet 发出 POST 请求。
起初我以为是服务器端的问题,所以我尝试通过 POSTMAN 软件执行 POST。
结果是完美的,响应是 JSON。
但是当我尝试在我的 iPhone 上执行此操作时,本机 http 组件会抛出一个错误,其中所有值都为空。
所以我认为它与我的打字稿代码有关,你能帮帮我吗?
我的打字稿代码:
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { TabsPage } from '../tabs/tabs';
import { HTTP } from '@ionic-native/http';
import 'rxjs/add/operator/map';
import { Storage} from '@ionic/storage';
import { ShareService } from '../../services/share/share';
@IonicPage()
@Component({
selector: 'page-login',
templateUrl: 'login.html',
})
export class LoginPage {
static readonly SERVER_ADDRESS = 'http://example.com';
constructor(public navCtrl: NavController, public navParams: NavParams, private http: HTTP, private storage:Storage, private shareService: ShareService) {
this.storage.ready().then( () => {
this.storage.get("user").then( (user) => {
if( user !== null){
console.log(shareService.getUserName());
shareService.setUser(user.firstName,user.lastName,user.username,user.customer);
this.navCtrl.push(TabsPage);
}
});
});
}
ionViewDidLoad() {
console.log('ionViewDidLoad LoginPage');
}
login(username,password){
var body = {
username: username.value,
password: password.value
}
let header:any = {
'Content-Type': 'application/json'
}
this.http.setDataSerializer('json');
this.http.post(LoginPage.SERVER_ADDRESS+'/external/MobileLoginServlet',body,header).then(
data => {
var response = JSON.parse(data.data);
let user = response[0];
user.customer = 3;
user.firstname = "Christian";
user.lastName = "Prellwitz";
console.log(user);
this.storage.ready().then( () =>{
this.storage.set("user",user);
});
this.navCtrl.push(TabsPage);
}).catch(error =>{
console.log(error);
console.log(error.status);
console.log(error.error);
console.log(error.headers);
});
}
}
我的 Servlet CORS:
response.setHeader("Access-Control-Allow-Origin", "*");
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
什么http组件returns:
[app-scripts] [11:19:53] console.log: [object Object]
[app-scripts] [11:19:53] console.log: null
[app-scripts] [11:19:53] console.log: null
[app-scripts] [11:19:53] console.log: null
提前感谢您的帮助。
原来我做的成功有问题。 Ionic 本机 HTTP 组件似乎捕获了其中发生的每个错误。
解决方案是我将 "let user = response[0];" 更改为 "let user = response.data[0];"
无论如何,感谢您的时间和帮助。
我正在尝试让一个简单的应用程序在 iOS 上与 Ionic 一起工作。
该应用程序包含一个简单的按钮,用于使用函数 login(username, password) 向我服务器上的 servlet 发出 POST 请求。
起初我以为是服务器端的问题,所以我尝试通过 POSTMAN 软件执行 POST。
结果是完美的,响应是 JSON。
但是当我尝试在我的 iPhone 上执行此操作时,本机 http 组件会抛出一个错误,其中所有值都为空。
所以我认为它与我的打字稿代码有关,你能帮帮我吗?
我的打字稿代码:
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { TabsPage } from '../tabs/tabs';
import { HTTP } from '@ionic-native/http';
import 'rxjs/add/operator/map';
import { Storage} from '@ionic/storage';
import { ShareService } from '../../services/share/share';
@IonicPage()
@Component({
selector: 'page-login',
templateUrl: 'login.html',
})
export class LoginPage {
static readonly SERVER_ADDRESS = 'http://example.com';
constructor(public navCtrl: NavController, public navParams: NavParams, private http: HTTP, private storage:Storage, private shareService: ShareService) {
this.storage.ready().then( () => {
this.storage.get("user").then( (user) => {
if( user !== null){
console.log(shareService.getUserName());
shareService.setUser(user.firstName,user.lastName,user.username,user.customer);
this.navCtrl.push(TabsPage);
}
});
});
}
ionViewDidLoad() {
console.log('ionViewDidLoad LoginPage');
}
login(username,password){
var body = {
username: username.value,
password: password.value
}
let header:any = {
'Content-Type': 'application/json'
}
this.http.setDataSerializer('json');
this.http.post(LoginPage.SERVER_ADDRESS+'/external/MobileLoginServlet',body,header).then(
data => {
var response = JSON.parse(data.data);
let user = response[0];
user.customer = 3;
user.firstname = "Christian";
user.lastName = "Prellwitz";
console.log(user);
this.storage.ready().then( () =>{
this.storage.set("user",user);
});
this.navCtrl.push(TabsPage);
}).catch(error =>{
console.log(error);
console.log(error.status);
console.log(error.error);
console.log(error.headers);
});
}
}
我的 Servlet CORS:
response.setHeader("Access-Control-Allow-Origin", "*");
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
什么http组件returns:
[app-scripts] [11:19:53] console.log: [object Object]
[app-scripts] [11:19:53] console.log: null
[app-scripts] [11:19:53] console.log: null
[app-scripts] [11:19:53] console.log: null
提前感谢您的帮助。
原来我做的成功有问题。 Ionic 本机 HTTP 组件似乎捕获了其中发生的每个错误。
解决方案是我将 "let user = response[0];" 更改为 "let user = response.data[0];"
无论如何,感谢您的时间和帮助。