angular - 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 没有问题,但我可能在这里遗漏了一些东西。
解决方案
您可以使用该encodeURIComponent
方法对密码值进行编码。因此,您将在HttpParams
对象中设置密码,如下所示:
const body = new HttpParams().set('UserID', 'James').set('Password', encodeURIComponent('Bond+'));
现在,当您在 .Net API 中获得 的值时Password
,它应该类似于“Bond%2B”,您可以再次使用它进行解码System.Web.HttpUtility.UrlDecode()
推荐阅读
- haxe - 解释@:remove @:generic 元数据组合
- docker - 在 docker 中安装 MarkLogic 的 2 节点集群
- java - 如何用括号表示逻辑表达式作为对象?
- swiftui - SwiftUI UIPageView 编译错误和操作表问题
- assembly - 汇编 x86_64 使用 SYSCALL 打印单个 ASCII 字符
- javascript - Cucumber - 数据驱动测试 - 同一场景中的多个类似步骤
- c# - 尝试检查列表中是否存在坐标,以便我可以忽略
- csv - Clojure - 解析小型 CSV 文件的内存使用情况
- gcc - 获取所有 fortran 浮点错误 (FPE) 警告的列表?
- sql-server - 当文本包含非日语字符时,日语中的 SQL 排序顺序会中断