Angular 我如何发送post请求5?

Angular 我如何发送post请求5?,angular,typescript,ionic-framework,ionic3,Angular,Typescript,Ionic Framework,Ionic3,我有下一个发送请求的函数 addSite(address, username, password, device_token, os_type){ this.headers = (new HttpHeaders()) .set('Content-type', 'application/json') .set('Access-Control-Allow-Method', 'POST'); let params = new HttpParams();

我有下一个发送请求的函数

addSite(address, username, password, device_token, os_type){
    this.headers = (new HttpHeaders())
      .set('Content-type', 'application/json')
      .set('Access-Control-Allow-Method', 'POST');

    let params = new HttpParams();
    params.set('username', username)
          .set('password', password)
          .set('device_token', device_token)
          .set('os_type', os_type);
    return this.http.post(`${address + Config.API_URL}, params,
      {headers: this.headers} )
  }
}

我总是会出错,这是在我做没有参数的请求时发生的。但是我有参数,请帮我找出错误。

像这样将参数作为表单数据发送

addSite(address, username, password, device_token, os_type){
    this.headers = (new HttpHeaders())
      .set('Content-type', 'application/json')
      .set('Access-Control-Allow-Method', 'POST');

    const formData = new FormData();
    formData.append('username', username);
    formData.append('password', password);
    formData.append('device_token', device_token);
    formData.append('os_type', os_type);
    return this.http.post(`${address + Config.API_URL}, formData,
      {headers: this.headers} )
  }
}

比较您对
HttpParams
HttpHeaders
的处理-为什么它们不同?两者都是不可变的,它们的
set
方法都返回一个新对象。看起来您正在将参数发送到应该发送帖子正文的位置。对不起,我是新来的,你能给我举个例子吗?我认为参数应该与标题分开,不是吗?@R.Richards为什么?我发送url=${address+Config.API_url}、参数和头。例如关于不变性:确保您实际上应该作为参数发送,这对我来说似乎有点奇怪,通常我们不会像那样公开凭据…我尝试过,当我发送请求时,我的formData是空的。您确定您的数据值不是空的吗?您是对的,我只将头更改为头。追加('Content-Type','multipart/formdata');headers.append('Accept','application/json');它可以工作。我很高兴我能提供帮助。但令人遗憾的是,当我的答案确实有帮助时,有人投了反对票。