2017-11-14 2 views
1

ich eine App von Angular 4,2-5 aktualisiert haben, aber nach geändert Http-HttpClient erhielt Fehler auf POST-Anfrage:Http Httpclient in Angular 5: "Server hat mit dem Status 415 (Unsupported Media Type)"

Fehler reagiert der Server mit dem Status 415 (Unsupported Media Typ)

in app.module habe ich HttpClientModule importiert:

import { HttpClientModule } from '@angular/common/http'; 

Alter Code:

post(url: string, model: any): Observable<any> { 
     let body = JSON.stringify(model); 
     let headers = new Headers({ 'Content-Type': 'application/json' }); 
     let options = new RequestOptions({ headers: headers }); 
     return this._http.post(url, body, options) 
      .map((response: Response) => <any>response.json()) 
      .catch(this.handleError); 
    } 

neuer Code:

put(url: string, id: number, model: any): Observable<any> { 
     let body = JSON.stringify(model); 
     let headers = new Headers({ 'Content-Type': 'application/json' }); 
     let options: any = new RequestOptions({ headers: headers }); 
     return this._http.put(url + id, body, options) 
      .catch(this.handleError);  //only removed .map 
    } 

dank

+2

Sie müssen die Optionen und Header-Objekte zu überarbeiten, überprüfen Sie bitte https://angular.io/guide/http#making-a-post -request –

+2

hi.indeed, scheint zu funktionieren this._http.post (url, body, {headers: new HttpHeaders(). set ('Content-Type', 'application/json')} ) – mrapi

+0

lese die docs, sorgfältig und vollständig –

Antwort

1

Für mich ist es, ohne die Content-Type-Header eingestellt wird, wenn ein Objekt als Körper anstelle von stringify-ing es. Ich nehme an, dass die Verwendung einer Zeichenkette als Körper annimmt, dass Angular "text/plain" als Inhaltstyp statt der Standardanwendung "application/json" annimmt.

Anstatt also den neuen Code nur verwenden:

return this._http.put(url + id, model).subscribe(..

Verwandte Themen