2016-01-27 29 views
12

POST isteği yaparken üstbilgileri değiştiremiyorum.Angular2/Http (POST) üstbilgileri

Basit sınıf:

export class HttpService { 
    constructor(http: Http) { 
     this._http = http; 
    } 
} 

Denedim:

testCall() { 
    let body = JSON.stringify(
     { "username": "test", "password": "abc123" } 
    ) 

    let headers = new Headers(); 
    headers.append('Content-Type', 'application/json'); // also tried other types to test if its working with other types, but no luck 

    this._http.post('http://mybackend.local/api/auth', body, { 
     headers: headers 
    }) 
    .subscribe(
     data => { console.log(data); }, 
     err => { console.log(err); }, 
     {} => { console.log('complete'); } 
    ); 
} 

2: iki

testCall() { 
    let body = JSON.stringify(
     { "username": "test", "password": "abc123" } 
    ) 

    let headers = new Headers(); 
    headers.append('Content-Type', 'application/json'); // also tried other types to test if its working with other types, but no luck 

    let options = new RequestOptions({ 
     headers: headers 
    }); 

    this._http.post('http://mybackend.local/api/auth', body, options) 
    .subscribe(
     data => { console.log(data); }, 
     err => { console.log(err); }, 
     {} => { console.log('complete'); } 
    ); 
} 

hiçbiri çalışıyoruz Ben birkaç şey denedik. Sınıflardan herhangi birini ithal etmeyi unutmadım.

Google Chrome kullanıyorum. Bu yüzden 'Ağ' sekmesini kontrol ediyorum, isteğim var ve İçerik Türü'm metin/düz olduğunu söylüyor.

Bu bir hata mı, yoksa yanlış bir şey mi yapıyorum?

import {Headers} from 'angular2/http'; 
+0

plunkr oluşturmak ister misiniz? İlk seçenek iyi görünüyor, yani temelde çalışması gerekiyor ... – eesdil

cevap

13

Sana Angular2 HTTP desteğini doğru yolu kullanıyorsanız düşünüyorum:

GÜNCELLEME Ben Angular2/http Başlıkları sınıfını içe unuttum. Bu çalışma plunkr bakın: https://plnkr.co/edit/Y777Dup3VnxHjrGSbsr3?p=preview.

Belki de Headers sınıfını almayı unutmuşsunuzdur. Bu hatayı bir süre önce yaptım ve JavaScript konsolunda bir hata yoktu, ancak ayarlamaya çalıştığım başlıklar aslında ayarlanmadı. Örneğin, Content-Type başlığı ile ilgili olarak application/json yerine text/plain vardı. Thierry

import {Component} from 'angular2/core'; 
import {Http,Headers} from 'angular2/http'; 
import 'rxjs/Rx'; 

@Component({ 
    selector: 'my-app', 
    template: ` 
    <div (click)="executeHttp()"> 
     Execute HTTP 
    </div> 
    ` 
}) 
export class AppComponent { 
    constructor(private http:Http) { 

    } 

    createAuthorizationHeader(headers:Headers) { 
    headers.append('Authorization', 'Basic ' + 
     btoa('a20e6aca-ee83-44bc-8033-b41f3078c2b6:c199f9c8-0548-4be79655-7ef7d7bf9d20')); 
    } 

    executeHttp() { 
    var headers = new Headers(); 
    this.createAuthorizationHeader(headers); 
    headers.append('Content-Type', 'application/json'); 

    var content = JSON.stringify({ 
     name: 'my name' 
    }); 

    return this.http.post(
     'https://angular2.apispark.net/v1/companies/', content, { 
     headers: headers 
     }).map(res => res.json()).subscribe(
     data => { console.log(data); }, 
     err => { console.log(err); } 
    ); 
    } 
} 

Eğer size yardımcı Umut,: Sen burada

(ithalat dahil) tam bir çalışma örneği İşte ... Ben ithalatta Headers yorum yaparak size verilen plunkr bu üretebilir
+2

tanrım, çok aptalım. 'Başlıklar' sınıfını içe aktarmayı unuttum. İşaretlediğiniz için teşekkürler –