login.ts
onlogin() {
let login_email = "vvvv@gmail.com";
let login_password = "123456"
this.body = {
login_email: login_email,
login_password: login_password
};
this.auth.login(this.body).subscribe(data => {
this.result = data
console.log(data);
});
}
authservice.ts
login(param) {
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post(this.apiUrl + '/login', JSON.stringify(param), options)
.map((res: Response) => {
if (res) {
return { status: res.status, json: res.json() }
}
});
}
方法在postman中工作正常但是,虽然从ionic2发送相同的请求正在生成错误。获取方法工作正常但是post中存在一些问题。请求在post中发送空参数并生成错误400 Bad request
答案 0 :(得分:0)
您调试了请求,它是否以空体发送?我不确定这是否真的有所作为,但我将应该发送到服务器的对象作为第二个参数直接传递给post()方法,而不使用JSON.stringify()。你有没有尝试省略那部分?
答案 1 :(得分:0)
<强> Login.ts 强>
onlogin() {
const email = 'xxxxxx@gmail.com'; const password = '123456'; let body = new FormData(); body.append("login_email",email); body.append("login_password",password); console.log(body); this.auth.login(body).subscribe(data => {this.result = data; this.navCtrl.push(HomePage,{result:this.result}); }); }
<强> authservice.ts 强>
login(param) { const headers = new Headers({'ContentType':'application/formdata'}); return this.http.post('/api',param,headers) .map(this.extractDataLogin) .catch(error => this.handleError(error)); }
使用formdata发送数据解决了我的问题
let body = new FormData(); body.append("login_email",email); body.append("login_password",password);