POST方法在Angular2中不起作用

时间:2016-09-20 09:20:21

标签: java rest angular angular2-http

我是Angular2的新手。我试图从Angular2调用简单的java REST调用。当我发布数据时,我没有得到任何错误,但我的java post方法没有被调用。

Angular2 POST -

let emplyee = JSON.stringify(this.object);
    let url = 'http://localhost:8080/rest-app/rest/employeeService/insertEmployee';
    console.log("Data: " + emplyee);
    let headers = new Headers({'Content-Type': 'application/json'});
    let options = new RequestOptions({headers: headers});
    this.http.post(url, emplyee, options);

Java POST方法 -

@POST
@Path("/insertEmployee")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String insertEmployee(String employee) {
    logger.debug("Employee: " + employee);
    return "Hello";
}

2 个答案:

答案 0 :(得分:1)

这里的问题是预检工作没有通过。 您必须在Java API中允许CORS请求(您必须添加Access-Control-Allow-Origin *标头,请参阅API lib doc以了解如何添加它。)

这就是您订阅时出错的原因,因为您的预检请求无法通过。

编辑:有关此问题的更多解释,请参阅How to make CORS-enabled HTTP requests in Angular 2?

答案 1 :(得分:0)

你需要像这样添加订阅 -

    this.http.post(url, employee, options)
        .toPromise()
        .then(this.extractData)
        .catch(this.handleError);

如果你想使用诺言,那么就像这样使用它 -

{{1}}