2016-04-12 29 views
0

Köşeli 2 ile bazı JSON verilerini almak için Http.post() kullanıyorum. CURL veya HttpRequestor kullandığımda her şey düzgün çalışıyor. Ancak, Angular ile İçerik Uzunluğu> 0 olan bir Yanıt Üstbilgisi alıyorum ancak Yanıtın kendisinde veri yok.Köşeli 2 - İçerik Uzunluğu> 0 olan ancak içerik içermeyen bir POST Yanıt Başlığı Alma

public retrieveJsonData() { 
    var url = 'https://somewhere.com/whatever/GetItem?token=XXXX&resource=YYYY&data=%7B%22id%22%3A2207%7D'; 
    let options = new RequestOptions({}); 

    return this.http 
     .post(url, '', options) 
     .map(result => result.json()) 
     .catch(this.handleError); 
} 

talep Başlıkları:

POST /whatever/GetItem?token=XXXX&resource=YYYY&data=%7B%22id%22%3A2207%7D HTTP/1.1 
Host: somewhere.com 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:45.0) Gecko/20100101 Firefox/45.0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-US,en;q=0.5 
Accept-Encoding: gzip, deflate, br 
Referer: http://localhost:8888/ 
Content-Length: 0 
Content-Type: text/plain;charset=UTF-8 
Origin: http://localhost:8888 
Connection: keep-alive 

Tepki Başlıkları:

HTTP/1.1 200 OK 
Date: Tue, 12 Apr 2016 22:49:23 GMT 
Server: Apache/2.2.15 (CentOS) mod_ssl/2.2.15 OpenSSL/1.0.1e-fips 
Set-Cookie: Foo=6djdhg7pnsqavk0nqa83u7rqt6; path=/; secure 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
Content-Length: 1311 
Keep-Alive: timeout=15, max=1000 
Connection: Keep-Alive 
Content-Type: text/json 
= 1311 bu örnekte Yani

içerik-uzunluk ancak yanıt boştur. HttpRequester gibi bir araç kullanırsam POST beklendiği gibi çalışır ve yanıt 1311 karakterdir. Ne oluyor? İşte

+0

Yanıt yanıtı doğruysa tarayıcınızın geliştirici araçlarında yanıt gövdesini görebiliyorsunuz, bu durumda kodunuzda hata var demektir. GET kullanmak istediğiniz gibi görünüyor, ancak mevcut yöntem POST. – kemsky

+0

Yukarıdaki istek ve yanıt başlıkları, Firebug'dan doğrudan kopyalanır. Bu çağrı için bir POST isteği gerekiyor ve Angular 2 dışındaki ortamlarda düzgün çalışıyor. – ebakunin

cevap

1

Ben

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

     this.http.post(url, JSON.stringify({firstName:'Joe',lastName:'Smith'}),{headers:headers}) 
      .map((res: Response) => res.json()) 
      .subscribe((res:Person) => this.postResponse = res); 

sizin değerlerle değiştirdikten sonra bu deneyin sonrası isteklerini yapmak nasıl.