gpt4 book ai didi

javascript - Angular 5 HttpClient : Send POST params as URL encoded string

转载 作者:可可西里 更新时间:2023-11-01 02:39:15 27 4
gpt4 key购买 nike

Angular 5.0.1

我正在查看 Angular HttpClient 的文档:https://angular.io/guide/http ,但我似乎无法弄清楚如何将 POST 参数作为 URLEncoded 字符串而不是 JSON 字符串发送。例如,我的 Java http 客户端默认会这样发送:

username=test%40test.com&password=Password1&rolename=Admin

但是 Angular 想要默认发送为 Json:

{"username":"test@test.com","password":"Password1","rolename":"Admin"}

这是我目前的代码:

    let body = {
username: "test@test.com",
password: "Password1",
rolename: "Admin"
};

let headers = new HttpHeaders();
headers = headers.set("Content-Type", "application/x-www-form-urlencoded");


this.http.post(this.baseUrl, body, {
headers: headers,
})
.subscribe(resp => {
console.log("response %o, ", resp);
});

我也试过添加 HttpParams:

let  httpParams = new HttpParams();
httpParams.append("username", "test@test.com");
httpParams.append("password", "Password1");
httpParams.append("rolename", "Admin");

...
headers: headers,
params: httpParams

但是HttpParams好像没有作用。

知道如何对请求而不是 Json 进行 URL 编码吗?

最佳答案

append() 返回一个new HttpParams 对象,因此您需要对您的httpParams代码。试试这个:

let httpParams = new HttpParams()
.append("username", "test@test.com")
.append("password", "Password1")
.append("rolename", "Admin");

在上面的代码中,我们链接了我们的 append 调用,在每次调用时创建一个新的 HttpParams 对象。上次我们调用 append 时,返回的 HttpParams 对象将包含所有先前附加的参数。

关于javascript - Angular 5 HttpClient : Send POST params as URL encoded string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47445116/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com