【发布时间】:2018-07-30 16:58:11
【问题描述】:
我正在尝试调用本地 rest 网络服务来测试一个简单的登录功能 我已经尝试过使用 Get 函数,现在它工作正常我正在尝试使用 Post 函数,但我不知道如何将参数传递给我的请求
import { HttpClient,HttpParams } from '@angular/common/http';
import { Injectable } from '@angular/core';
import {Storage} from "@ionic/storage";
// import { HttpParams } from '@angular/http';
/*
Generated class for the RestProvider provider.
See https://angular.io/guide/dependency-injection for more info on providers
and Angular DI.
*/
@Injectable()
export class RestProvider {
apiUrl = 'http://localhost:8080/CrunchifyTutorials/api/crunchifyService';
user : any;
constructor(public http: HttpClient, public storage: Storage) {
console.log('Hello RestProvider Provider');
//console.log(this.storage.get('user'));
}
// getUsers() {
// return new Promise(resolve => {
// this.http.get(this.apiUrl).subscribe(data => {
// resolve(data);
// this.storage.set('user', data);
// }, err => {
// console.log(err);
// });
// });
// }
//--------------------------------------------
getUsers() {
// let data = new URLSearchParams();
// data.append('user', 'khaled');
// data.append('pass', 'khaled');
//data =Object.assign(urlSearchParams, {search: "person"});
const data = new HttpParams()
.set('user', 'khaled').set('pass', 'khaled');
this.http
.post(this.apiUrl, data, {headers:{'Content-Type': 'application/json'}})
.subscribe(data => {
alert('ok');
}, error => {
console.log(error.json());
});
}
}
还有 Java 部分
@POST
@Path("/crunchifyService")
@Produces("application/json")
@Consumes("application/json")
public Modele add (String user, String pass) throws ClassNotFoundException, SQLException{
Auth_Ctrl auth = new Auth_Ctrl();
int result =auth.connect(user, pass);
return auth.info(result);
}
问题是当我调试服务器部分时,我的所有参数都是空的,并且客户端部分没有错误
【问题讨论】:
-
data是 JSON 对象吗? -
不,它不是 JSON 对象,我如何将其转换为 JSON 对象
-
我同意 Chris 提供的答案,但如果您确实使用查询参数,则需要在 Angular 代码中使用
HttpParams。URLSearchParams属于已弃用的HttpModule。
标签: java angular web-services typescript ionic3