使用application / x-www-form-urlencoded Post方法在角度2中传递特殊字符

时间:2017-08-27 13:46:14

标签: angular ionic2

let urlSearchParams = new URLSearchParams();
    urlSearchParams.append("UserName",UserName);
    urlSearchParams.append("Password",Password);
    let body = urlSearchParams.toString()

    var header = new Headers();
    header.append("Content-Type", "application/x-www-form-urlencoded");
    header.append("Accept", "application/json");
    let option = new RequestOptions({ headers: header });
    return this.http.post(this.baseUrl, body, option)
        .map(res => res.json());

以上是我用来将参数传递给api的方法。

问题是当我传递字符串test@123时,API中只有测试@ 1可用。 但是当我通过123456789完整的字符串可用时。

我希望得到一些帮助。

3 个答案:

答案 0 :(得分:1)

使用encodeURIComponent来转义可能不符合URI参数的特殊字符或保留字符。

let urlSearchParams = new URLSearchParams();
    urlSearchParams.append("UserName",encodeURIComponent(UserName));//here
    urlSearchParams.append("Password",encodeURIComponent(Password));//and here
    let body = urlSearchParams.toString()

    var header = new Headers();
    header.append("Content-Type", "application/x-www-form-urlencoded");
    header.append("Accept", "application/json");
    let option = new RequestOptions({ headers: header });
    return this.http.post(this.baseUrl, body, option)
        .map(res => res.json());

答案 1 :(得分:1)

使用以下Javascript功能:

encodeURIComponent方法(值)

这将为您提供编码的字符串

答案 2 :(得分:0)

我遇到了类似的问题,不得不使用:

encodeURI(value)

我尝试了encodeURIComponent(value),但在我的情况下却不起作用。可能是因为这两个函数对某些特殊字符的处理方式不同。