angular 2 - HTTP get request参数特殊字符消失了

时间:2017-01-25 07:52:40

标签: angular http-get

我正在尝试使用一些参数进行HTTP调用。 param vsLoginToken的值为'0D + 92VVcZNFde + AWbHA'。

let params: URLSearchParams = new URLSearchParams();
params.set('tenantId', tenantId);
params.set('branchId', branchId);
params.set('vsLoginToken', vsLoginToken);

this._http.get(url, { search: params }).map(res => res.json()).
  catch(error => Observable.throw(error.json().error || 'Server error'));

但是当我在服务器端处理这个参数时,值为'0D 92VVcZNFde AWbHA'。正如您所看到的,两个'+'字符被替换为空格。谁可以帮我这个事?感谢

2 个答案:

答案 0 :(得分:0)

+符号是URL中的特殊字符,因为它替换了空格。您需要对其进行URL编码,然后将其转换为%2B

http://meyerweb.com/eric/tools/dencoder/

答案 1 :(得分:0)

在URLSearchParams的官方文档中,它明确说明了以下内容

These are the characters that are not encoded: ! $ \' ( ) * + , ; A 9 - . _ ~ ? /

官方文档还包括如何在必要时使用queryencoder。 请参阅https://angular.io/docs/ts/latest/api/http/index/URLSearchParams-class.html