2017-10-24 1 views
0

Ich habe ein Java-Backend-Projekt, das JERSEY und ein ionischen 3-Projekt für das Front-End verwendet. Ich kann die Post-Methode nicht funktionieren, obwohl die get-Methode gut funktioniert.Fehler 415 Nicht unterstützter Medientyp beim Versuch, http.post von einem ionic 3-Projekt zu einem Java-Webservice

dies ist die post-Methode>

 @POST 
     @Consumes(MediaType.APPLICATION_JSON) 
     @Path("/") 
     public Response create(Oferta oferta) throws SQLException,         ClassNotFoundException{ 
    ofertaDAO dao = new ofertaDAO(); 
    dao.insert(oferta); 
    return Response 
     .status(200) 
     .header("Access-Control-Allow-Origin", "*") 
     .header("Access-Control-Allow-Headers", "origin, content-type, accept, authorization") 
     .header("Access-Control-Allow-Credentials", "true") 
     .header("Access-Control-Allow-Methods", "GET, POST, PUT,  DELETE, OPTIONS, HEAD") 
     .header("Access-Control-Max-Age", "1209600") 
     .entity(oferta) 
     .build(); 

} 

Ich habe versucht, meine Post-Funktion an meinem ionischen Projekt auf zwei verschiedene Arten zu tun, das:

postData(params){ 
    let headers = new Headers(); 
    headers.append('Content-type','application/json'); 
    return this.http.post(this.api,params,{ 
    headers: headers 
    }).map(
    (res:Response) => {return res.json();} 
    ); 

     } 

Und auf diese Weise>

  postData(params){   
      let headers = new Headers({'Content-type' : 'application/x-www-form-urlencoded'}); 
      return this.http.post(this.api,params,{ 
      headers: headers, 
      method: 'POST' 
      }).map(
      (res:Response) => {return res.json();} 
     ); 

      } 

Der erste Weg, den ich http 400 Fehler, und die zweite Möglichkeit bekomme ich 415 Fehler. Was fehlt mir hier?

Antwort

1

Sie erhalten einen 415-Fehler, weil der Server die Anwendung/json erwartet und Sie den Inhaltstyp auf application/x-www-form-urlencoded setzen.

Sie erhalten eine 400, weil die Daten, die Sie senden, nicht gültig sind: Der Server erwartet bestimmte JSON-Struktur und Werte, und Sie senden etwas anderes. Sie sollten eine Fehlermeldung in der Antwort haben, die sagt, was falsch ist. Überprüfen Sie, was Sie senden, und überprüfen Sie, wie die Struktur eines Oferta sein soll.

Beachten Sie, dass das Setzen des Headers content-type auf application/json nutzlos ist, da Angular dies für Sie tut, wenn Sie ein Objekt posten.

+0

Ja, du hattest recht, du musstest die ngModel-Namen wie die oferta-Eigenschaften einstellen, funktioniert jetzt gut! ty –

Verwandte Themen