首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Angular2 - Http POST请求参数

Angular2 - Http POST请求参数
EN

Stack Overflow用户
提问于 2016-02-05 05:52:49
回答 7查看 249.6K关注 0票数 94

我正在尝试发出POST请求,但我无法使其正常工作:

代码语言:javascript
复制
testRequest() {
      var body = 'username=myusername?password=mypassword';
      var headers = new Headers();
      headers.append('Content-Type', 'application/x-www-form-urlencoded');

      this.http
        .post('/api',
          body, {
            headers: headers
          })
          .subscribe(data => {
                alert('ok');
          }, error => {
              console.log(JSON.stringify(error.json()));
          });
}

我基本上想复制这个http请求(而不是ajax),就像它是由一个html表单发起的一样:

网址: /api

Params:用户名和密码

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2016-02-05 06:05:14

我认为body对于application/x-www-form-urlencoded内容类型是不正确的。您可以尝试使用以下命令:

代码语言:javascript
复制
var body = 'username=myusername&password=mypassword';

希望对你有帮助,蒂埃里

票数 51
EN

Stack Overflow用户

发布于 2016-12-29 22:06:55

在更高版本的Angular2中,如果您将正确类型的对象作为body传递,则不需要手动设置Content-Type标头和编码正文。

你可以做到这一点

代码语言:javascript
复制
import { URLSearchParams } from "@angular/http"


testRequest() {
  let data = new URLSearchParams();
  data.append('username', username);
  data.append('password', password);

  this.http
    .post('/api', data)
      .subscribe(data => {
            alert('ok');
      }, error => {
          console.log(error.json());
      });
}

这样,angular将为您编码正文,并设置正确的Content-Type头。

附注:不要忘记从@angular/http导入URLSearchParams,否则它将无法工作。

票数 42
EN

Stack Overflow用户

发布于 2016-11-15 23:31:52

因此,让它成为一个完整的答案:

代码语言:javascript
复制
login(username, password) {
        var headers = new Headers();
        headers.append('Content-Type', 'application/x-www-form-urlencoded');
        let urlSearchParams = new URLSearchParams();
        urlSearchParams.append('username', username);
        urlSearchParams.append('password', password);
        let body = urlSearchParams.toString()
        return this.http.post('http://localHost:3000/users/login', body, {headers:headers})
            .map((response: Response) => {
                // login successful if there's a jwt token in the response
                console.log(response);
                var body = response.json();
                console.log(body);
                if (body.response){
                    let user = response.json();
                    if (user && user.token) {
                        // store user details and jwt token in local storage to keep user logged in between page refreshes
                        localStorage.setItem('currentUser', JSON.stringify(user)); 
                    }
                }
                else{
                    return body;
                }
            });
    }
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35212341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档