私はAngp4とAsp.net web apiを組み合わせて使用しています。私は自分の反応の性質をどう読むことができるのか分かりません。角度4 Http投稿に応答を入れてください
私のポストの要求:
postLogin(values: string): Observable<string> {
let body = "[email protected]&password=Test1234!&grant_type=password";
/*let body = values + "&grant_type=password";*/
let headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded'});
let options = new RequestOptions({headers: headers});
return this._http.post(this._postLoginUrl, body, options)
.catch(this.handleError);
}
そして、私の実際のポストメソッドを呼び出します。
this._loginService.postLogin(value)
.subscribe(
data => console.log(data),
err => console.log(err));
そして、これは仕事、私は入手できますかん私のコンソールの応答
しかし、どのように私のプロパティを読むことができますか?
UPDATE
私は少し私のコードを更新しましたが、私がしたいように、それはまだ動作しません、私は、ドキュメントを読んでいたが、私はまだ、さらに得ることができませんでした。 postメソッドへ
私の新しいコール:
console.log("username=" + this.username + "&password=" + this.password);
this._loginService.postLogin("username=" + this.username + "&password=" + this.password)
.subscribe(
user => this.user = user),
err => console.log(err);
そして、私の新しいポストの要求:
private extractData(res: Response) {
let body = res.json();
return body.fields || {};
}
extractData機能などで
postLogin(values: string): Observable<User> {
let body = values + "&grant_type=password";
let headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded'});
let options = new RequestOptions({headers: headers});
return this._http.post(this._postLoginUrl, body, options)
.map(this.extractData)
.catch(this.handleError);
}
私はのコンソールログを行う場合私のユーザーオブジェクトは今、私は未定義と私はユーザーのプロパティにアクセスしようとすると、私のブラウザがリフレッシュを開始します。私が間違っていること、なぜ私のデータにアクセスできないのですか?
ドキュメントを読んでくださいにアクセスすることができます。何
fields
がないので、したがって、あなただけの実際の応答を返す必要があります。 – jonrsharpeあなたの答えは次のとおりです:https://angular.io/docs/ts/latest/guide/server-communication.html#!#extract-data :)しかし、私は*非常にお勧めします全体を読んで;) – Alex
言ったように、ドキュメントを読む! POSTメソッドに関係なく、JSONレスポンスを解析する必要があります。これはサービスの戻り値でここで行います。戻り値this._http.post(this._postLoginUrl、body、options).map(res => res.json()) ' – joh04667