我必须将查询参数传递给angular4中的post请求,所以我使用了角度4的HttpParams。这适用于其他发布请求,但在从后端访问身份验证令牌时失败。 查询参数应该是这样的
grant_type=password&username=username&password=password
所以我尝试了这个
login(username: string, password: string) {
const headers = new HttpHeaders()
.set('Content-Type', 'application/x-www-form-urlencoded')
.set('Accept', 'application/json');
let params = new HttpParams();
params = params.set('username', username);
params = params.set('password', password);
params = params.set('grant_type', 'password');
return this.http.post('////////////', {params: params},
{ headers: headers }).subscribe(data => {
console.log(data);
},
err => {
console.log('Error occured');
});
}
答案 0 :(得分:1)
您将参数作为JSON对象的一部分传递,该对象包含名为params
的单个键,其值是应该是正文本身的查询字符串。
应该是
return this.http.post(url, params.toString(), { headers })
如果你的后端接受JSON而不是x-www-form-urlencoded,那么一切都会更容易。