jwB*_*ide 11 javascript angular
Angular 5.0.1
我正在查看Angular HttpClient的文档:https://angular.io/guide/http,但我似乎无法想象如何将POST参数作为URLEncoded字符串而不是JSON字符串发送.例如,我的Java http客户端将默认发送如下:
username=test%40test.com&password=Password1&rolename=Admin
Run Code Online (Sandbox Code Playgroud)
但是Angular希望默认发送为Json:
{"username":"test@test.com","password":"Password1","rolename":"Admin"}
Run Code Online (Sandbox Code Playgroud)
这是我目前的代码:
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);
});
Run Code Online (Sandbox Code Playgroud)
我也试过添加HttpParams:
let httpParams = new HttpParams();
httpParams.append("username", "test@test.com");
httpParams.append("password", "Password1");
httpParams.append("rolename", "Admin");
...
headers: headers,
params: httpParams
Run Code Online (Sandbox Code Playgroud)
但HttpParams似乎没有任何效果.
知道如何对请求进行URL编码而不是Json吗?
Chr*_*tos 11
append()返回一个新 HttpParams对象,因此您需要对httpParams代码稍作修改.试试这个:
let httpParams = new HttpParams()
.append("username", "test@test.com")
.append("password", "Password1")
.append("rolename", "Admin");
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我们链接我们的append调用,HttpParams在每次调用时创建一个新对象.我们最后一次调用时append,HttpParams返回的对象将包含所有先前附加的参数.
| 归档时间: |
|
| 查看次数: |
18335 次 |
| 最近记录: |