2016-09-20 3 views
0

Ich bin neu in Angular2. Ich versuche, einen einfachen Java-REST-Aufruf von Angular2 aufzurufen. Wenn ich Daten poste, bekomme ich überhaupt keinen Fehler, aber meine Java-Post-Methode wird nicht aufgerufen.POST-Methode funktioniert nicht in Angular2

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 Methoden-

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

Was ist die Antwort, die Sie erhalten? Fügen Sie '.subscribe (res => console.log (res))' direkt nach 'this.http.post()' zu 'console.log' hinzu. – Supamiu

+0

@Supamiu thnx für die Antwort, diese Antwort habe ich, ** Antwort auf Preflight-Anfrage nicht übergeben Kontrolle der Zugangskontrolle: Nein 'Access-Control-Allow-Origin' Header ist auf der angeforderten Ressource vorhanden. Origin 'http: // localhost: 3000' ist daher nicht erlaubt. ** – deen

Antwort

1

Das Problem hier ist, dass das Preflight Resuest nicht besteht. Sie müssen CORS-Anfragen in Ihrer Java-API zulassen (Sie müssen Access-Control-Allow-Origin * Header hinzufügen, sehen Sie Ihre API Lib Doc, um zu wissen, wie Sie es hinzufügen).

Aus diesem Grund erhalten Sie einen Fehler beim Abonnieren, weil Ihre Preflight-Anfrage nicht bestanden wird.

EDIT: siehe How to make CORS-enabled HTTP requests in Angular 2? für weitere Erklärungen zu dem Problem.

0

Sie müssen wie this-

this.http.post(url, emplyee, options) 
    .subscribe((response) => { 
      //handle response here 
    }) 
    .catch(this.handleError); 
abonnieren hinzufügen Wenn Sie Versprechen verwenden wollen, dann verwenden Sie es wie

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