使用Angular的HttpClient发布到API

时间:2019-02-21 16:55:59

标签: angular asp.net-core angular6 angular7

在Angular 7应用程序上,我正在调用服务:

  this.messageService.send(model).pipe(

    catchError(err => {
      console.log('Error:', err);
      return err;
    }),

    map((response: Response) => {
      console.log(response);
    })

  );

服务方法调用API:

public send(model: Model): Observable<Response> {

  const headers: HttpHeaders = new  HttpHeaders();
  headers.set('Content-Type', 'application/x-www-form-urlencoded');

  console.log(model);

  return this.httpClient.post<Response>>(`send`, model, { headers: headers });

}

执行model时,我可以在控制台上看到console.log(model);

但是我在API上遇到的断点不会触发,并且在catchError中没有任何错误。

API操作是ASP.NET Core 2.2。如下:

[HttpPost("send")]
public async Task<IActionResult> Send([FromBody]Model model) {

  return Ok();

}

注意
在同一应用程序上,我可以将httpClientget方法一起使用而不会出现问题。

不确定我缺少什么。有想法吗?

更新

我将Angular服务代码更改为:

public send(model: Model): Observable<Response>> {

  const headers: HttpHeaders = new  HttpHeaders();
  headers.set('Content-Type', 'application/json');

  console.log(model);

  return this.httpClient.post<Response>>(`send`, JSON.stringify(model), { headers: headers });

}

仍然无法正常工作。

这是一个Angular问题,因为我刚刚用Postman发布了JSon数据。

它使用Postman进行工作,没有任何形式的身份验证/授权。

1 个答案:

答案 0 :(得分:1)

尝试在Visual Studio上查看输出窗口。也许有一些有关该问题的信息。 验证控制器是否具有AthorizationAttribute。 验证Content-Type”,“ application / x-www-form-urlencoded”,然后尝试将其更改为“ Content-Type”:“ application / json”