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

kee*_*.rb 5 ionic2 angular

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());
Run Code Online (Sandbox Code Playgroud)

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

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

我希望得到一些帮助。

Sur*_*Rao 2

用于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());
Run Code Online (Sandbox Code Playgroud)