Angular 2 http POST

A.k*_*ifa 3 javascript rest typescript angular

我开始使用angular 2和typeScript,一切都很棒,但是当我在控制台日志中使用rest api(POST)时,我得到了Response {_body: "", status: 204, statusText: "Ok", headers: Headers, type: 2… },尽管我通过了真正的param登录,这是我的代码

 authentification(){
        var headers = new Headers();
          headers.append('Content-Type', 'application/x-www-form-urlencoded');
        // headers.append('Content-Type', 'application/json');
       return this.http.post(this._postUrl,JSON.stringify({username:"abc",password:"abc"}),{headers:headers});
    }
Run Code Online (Sandbox Code Playgroud)

这是我的网络服务

 @POST
    @Path("/admin")
    @Consumes("application/x-www-form-urlencoded")
    public User getDate(@HeaderParam("username")String username,@HeaderParam("password")String password) throws Exception{
        try {
            String passwordC =  AESCrypt.encrypt(password);
            User u = userService.login(username, passwordC);
            return u;

        } catch (Exception e) {
            return null;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我认为我的网络服务参数中的问题在字符串和角度参数中是json,
任何人都可以帮助我,谢谢.

dfs*_*fsq 7

对于form-urlencoded内容类型,您需要使用key = value对以查询字符串格式发送数据.您可以URLSearchParamshttpmodule from class 的帮助下构建此字符串.在你的情况下,它看起来像这样:

authentification() {

    var headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');

    var params = new URLSearchParams();
    params.append('username', 'abc');
    params.append('password', 'abc'); // .toString() => username=abc&password=abc

    return this.http.post(this._postUrl, params.toString(), {headers});
}
Run Code Online (Sandbox Code Playgroud)