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完整的字符串可用时。
我希望得到一些帮助。
答案 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)
,但在我的情况下却不起作用。可能是因为这两个函数对某些特殊字符的处理方式不同。