Я написал следующий код в угловых 2:
this.http.request('http://thecatapi.com/api/images/get?format=html&results_per_page=10').
subscribe((res: Response) => {
console.log(res);
})
Когда я печатаю ответ, который я получаю в консоли:
Я хочу иметь доступ в код в поле тело в ответ. В 'тело' поле начинается с символа подчеркивания, который означает, что он'ы собственной области. Когда я измените его на 'консоли.журнал(РЭС._body)' я получил сообщение об ошибке.
Вы знаете какие-нибудь функции добытчика, который может помочь мне здесь?
Как просьба
и ответ
распространяется "тело".
Чтобы получить содержимое, используйте свойство text()
метод.
this.http.request('http://thecatapi.com/api/images/get?format=html&results_per_page=10')
.subscribe(response => console.log(response.text()))
Этот API устарел в угловой 5. Новый HttpResponse, который в<Т>
класс а не имеет.метод Body (). С
{responseType: 'текст'}`, которая должна возвращать строку.
Вот пример открыть ответ организма с помощью angular2 построен в ответ
import { Injectable } from '@angular/core';
import {Http,Response} from '@angular/http';
@Injectable()
export class SampleService {
constructor(private http:Http) { }
getData(){
this.http.get(url)
.map((res:Response) => (
res.json() //Convert response to JSON
//OR
res.text() //Convert response to a string
))
.subscribe(data => {console.log(data)})
}
}
Вот пример "получить" HTTP-запрос:
this.http
.get('http://thecatapi.com/api/images/get?format=html&results_per_page=10')
.map(this.extractData)
.catch(this.handleError);
private extractData(res: Response) {
let body = res.text(); // If response is a JSON use json()
if (body) {
return body.data || body;
} else {
return {};
}
}
private handleError(error: any) {
// In a real world app, we might use a remote logging infrastructure
// We'd also dig deeper into the error to get a better message
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.error(errMsg); // log to console instead
return Observable.throw(errMsg);
}
Примечание .получить()
вместо .запрос()
.
Я хотел бы также предоставить вам дополнительные extractData " и " handleerror с` методов в случае, если вы нуждаетесь в них, и вы Don'т иметь их.
Данные ответов представлены в виде строки в формате JSON. Приложение должно парсить эту строку в JavaScript-объекты, называя ответ.формат JSON().
this.http.request('http://thecatapi.com/api/images/get?format=html&results_per_page=10').
.map(res => res.json())
.subscribe(data => {
console.log(data);
})
https://angular.io/docs/ts/latest/guide/server-communication.html#!#извлечение-данных
У меня тоже тот же вопрос, и это сработало для меня попробовать:
this.http.request('http://thecatapi.com/api/images/get?format=html&results_per_page=10').
subscribe((res) => {
let resSTR = JSON.stringify(res);
let resJSON = JSON.parse(resStr);
console.log(resJSON._body);
})
К сожалению, многие ответы просто показывают, как получить доступ к телу ответа как текст. По умолчанию, тело объекта ответ это текст, а не объект, как он проходит через поток.
То, что вы ищете в JSON (функция) тела объекта недвижимости на объект ответа. МДН объясняет это гораздо лучше, чем я:
На в JSON() метод подмешать тело принимает поток ответ и читает его до конца. Она возвращает обещание, которое устраняет с результатом анализа текста как JSON.
response.json().then(function(data) { console.log(data);});
или используя на ES6:
response.json().then((data) => { console.log(data) });
Источник: https://developer.mozilla.org/en-US/docs/Web/API/Body/json
Эта функция возвращает обещание по умолчанию, но учтите, что это может быть легко преобразован к обозримому для потребления ниже по течению (каламбур поток не предназначен, но работает отлично).
Без вызова в формате JSON (), функция, данные, особенно при попытке доступа к _body собственность объект ответа, который будет возвращен в виде текста, что, очевидно, не то, что вы хотите, если вы ищете глубокий объект (как объект со свойствами, или чем не может быть просто преобразован в другой возражал).
.subscribe(data => {
console.log(data);
let body:string = JSON.parse(data['_body']);`
Может'т вы просто обратитесь к _body объект напрямую? Видимо, это не'т вернуть любой ошибки, если используется этот способ.
this.http.get('https://thecatapi.com/api/images/get?format=html&results_per_page=10')
.map(res => res)
.subscribe(res => {
this.data = res._body;
});
Это работа для меня 100% :
let data:Observable<any> = this.http.post(url, postData);
data.subscribe((data) => {
let d = data.json();
console.log(d);
console.log("result = " + d.result);
console.log("url = " + d.image_url);
loader.dismiss();
});
Это должно работать. Вы можете получить тело, используя ответ.формат JSON (), если его ответ в формате JSON.
this.http.request('http://thecatapi.com/api/images/get?format=html&results_per_page=10').
subscribe((res: Response.json()) => {
console.log(res);
})