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

标签 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

但是 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/

相关文章:

javascript - jQuery 示例 : Reseting an input file element in case of non-allowed file-extensions

javascript - 在编辑列表中的元素时如何防止整个列表重新呈现?

node.js - Angular 7 - 在运行时将文件加载到 Assets 文件夹中

javascript - angular 2 文本输入使有意义的强制性

html - 使用 angular2 在 html 中调用函数的最佳实践是什么?

angular - 如何创建共享模块

javascript - JQuery:如何在我自己的函数中使用 JQuery 延迟?

javascript - 如何修复按下按钮的颜色选择?

c# - 将 .NET DateTimeFormatInfo 转换为 Javascript jQuery formatDate?

css - 更改提交按钮的颜色