在角度4中发送URL查询参数不起作用

时间:2017-11-22 18:05:53

标签: angular angular-cli

我必须将查询参数传递给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');
    });
  }

1 个答案:

答案 0 :(得分:1)

您将参数作为JSON对象的一部分传递,该对象包含名为params的单个键,其值是应该是正文本身的查询字符串。

应该是

return this.http.post(url, params.toString(), { headers })

如果你的后端接受JSON而不是x-www-form-urlencoded,那么一切都会更容易。