首页 > 解决方案 > Angular WebAPI POST 服务调用替换了请求正文中的“+”字符

问题描述

我正在从 Angular 向 .Net WebAPI 进行 POST 调用,该调用在大多数情况下都有效,但在传递包含“+”号作为尾随字符的请求参数时会导致问题。在使用Newtonsoft.Json进行序列化的.Net WebAPI 服务中,当接收到在请求结束时缺少“+”的请求对象时。

我的角度代码:

const body = new HttpParams().set('UserID', 'James').set('Password', 'Bond+');
this.http.post(API_URLS.UserAuthentication, body.toString(),{ headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded') }

在我看来,Angular 或 .Net 没有问题,但我可能在这里遗漏了一些东西。

标签: angularasp.net-web-apiurlencode

解决方案


您可以使用该encodeURIComponent方法对密码值进行编码。因此,您将在HttpParams对象中设置密码,如下所示:

const body = new HttpParams().set('UserID', 'James').set('Password', encodeURIComponent('Bond+'));

现在,当您在 .Net API 中获得 的值时Password,它应该类似于“Bond%2B”,您可以再次使用它进行解码System.Web.HttpUtility.UrlDecode()


推荐阅读