httpheaders headers common http service angular

common - httpclient headers angular 4



Cómo establecer Content-Type y Accept en angular2 obteniendo el error 415 Tipo de soporte no soportado (2)

Aquí hay una manera más clara, que está escrita en los documentos de Angular2 ( https://angular.io/docs/ts/latest/guide/server-communication.html ).

import {Headers, RequestOptions} from ''angular2/http''; let body = JSON.stringify({ ''foo'': ''bar'' }); let headers = new Headers({ ''Content-Type'': ''application/json'' }); let options = new RequestOptions({ headers: headers }); return this.http.post(url, body, options) .map(res => res.json().data) .catch(this.handleError)

Tenga en cuenta que creo que esto solo es necesario para las consultas POST.

¿Cómo establecer Content-Type y Accept en angular2?

Estoy tratando de enviar una llamada posterior con el tipo de contenido (application / json) en el encabezado. Pero por alguna razón no envía, siempre envía texto / plain; charset = UTF-8 en el tipo de contenido Recibo 415 Tipo de medio no compatible cuando trato de realizar una llamada al servicio REST. Creo que necesito establecer el tipo y tipo de contenido correctamente de alguna manera no se establece desde el código lo que hago debajo de nosotros la solicitud de encabezado

Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding gzip, deflate Accept-Language en-US,en;q=0.5 Content-Length 13 Content-Type text/plain; charset=UTF-8 Host enrova.debug-zone.com:8000 Origin http://localhost:8000 Referer http://localhost:8000/add User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0

El código está debajo

import {Component, View} from ''angular2/angular2''; import { Inject} from ''angular2/di''; import {Http} from ''angular2/http''; export class AchievementsService { constructor( @Inject(Http) private http: Http) { } getAchievementsOfType(type: string) : any { var path = ''/api/achievements/'' + type; return this.http.get(path); } getAllAchievements() : any { var path = ''/api/achievements''; return this.http.get(path); } addAnAchievement(newAchievement) { //var path = ''/api/achievements''; var path = ''http://test.com:8000/branch''; return this.http.post(''http://test.com:8000/branch'', JSON.stringify(newAchievement),{ headers: { ''Content-Type'': ''application/json; charset=utf-8''} }); } **Calling Class** import {Component, View} from ''angular2/angular2''; import { _settings } from ''../../settings'' import {FormBuilder, Validators, formDirectives, ControlGroup} from ''angular2/forms''; import {Inject} from ''angular2/di''; import {Router} from ''angular2/router''; import {AchievementsService} from ''../../services/achievementsService''; @Component({ selector: ''add'', injectables: [FormBuilder] }) @View({ templateUrl: _settings.buildPath + ''/components/add/add.html'', directives: [formDirectives] }) export class Add { addAchievementForm: any; constructor( @Inject(FormBuilder) private formBuilder: FormBuilder, @Inject(Router) private router: Router, @Inject(AchievementsService) private achievementsService: AchievementsService) { this.addAchievementForm = formBuilder.group({ name: [''''] }); } // This is the funtion that call post call written in achievementsService.ts addAchievement() { this.achievementsService.addAnAchievement(this.addAchievementForm.value) .map(r => r.json()) .subscribe(result => { this.router.parent.navigate(''/''); }); } }


En primer lugar, está utilizando importaciones incorrectas de angular2/angular2 ahora angular2 está en fase beta, por lo que casi todas las importaciones se han modificado. Lea esta respuesta para toda la lista de importaciones.

https://.com/a/34440018/5043867

entonces, según mi entendimiento, desea llamar a la solicitud de publicación utilizando REST Api, creo, y desea enviar el content type=''application/json'' por lo que debe enviar el mismo adjuntándolo al Header . Publiqué el ejemplo de usar el encabezado para usar tipo de contenido como a continuación.

import {Component, View, Inject} from ''angular2/core''; import {Http} from ''angular2/http''; PostRequest(url,data) { this.headers = new Headers(); this.headers.append("Content-Type", ''application/json''); this.headers.append("Authorization", ''Bearer '' + localStorage.getItem(''id_token'')) this.requestoptions = new RequestOptions({ method: RequestMethod.Post, url: url, headers: this.headers, body: JSON.stringify(data) }) return this.http.request(new Request(this.requestoptions)) .map((res: Response) => { if (res) { return [{ status: res.status, json: res.json() }] } }); }

PostRequest ejemplo ficticio usando PostRequest como nombre del método. para obtener más detalles sobre la llamada a la API HTTP y REST, consulte aquí: https://.com/a/34758630/5043867