javascript - Angular 2 HTTP POST

标签 javascript angular rest typescript

我开始使用 angular 2 和 typeScript ,一切都很好,但是当我在控制台日志中使用 rest api (POST) 时,我得到 Response {_body: "", status: 204, statusText: "Ok", headers: Headers, type: 2... ,尽管我传递了用于登录的真实参数,但这是我的代码

 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});
    }

这是我的网络服务

 @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;
        }
    }

我认为我的 web 服务参数字符串和 Angular 参数中的问题是 json
任何人都可以帮助我,谢谢。

最佳答案

对于表单 urlencoded 内容类型,您需要以带有键=值对的查询字符串格式发送数据。您可以借助 http 模块中的 URLSearchParams 类构建此字符串。在您的情况下,它可能看起来像这样:

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});
}

关于javascript - Angular 2 HTTP POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35254579/

相关文章:

python - 我应该为 REST API 错误引发哪个异常?

javascript - 在文本框中输入数据,将其保存到html表格中

JavaScript 堆内存不足错误

javascript - 纯 JavaScript 中的单击事件

javascript - 如何使用 qunit 测试 html 元素的内容

angular - 运输区域设置。如何添加自定义日期过滤器?

javascript - 从列表数组中删除元素的最佳解决方案

java - 如何使用 Java 发布经过身份验证的 Jenkins 作业

javascript - 使用 Webpack 与主模块一起构建独立模块

java - 如何使用eclipse在本地部署rest服务,以及应该使用什么客户端