2017-09-08 6 views
0

J'essaie de demander une page Web avec un appel http et de traiter les données.Angular 4 comment demander le contenu d'une page Web en tant qu'objet json

Je pourrais éviter l'origine croisée avec un plug-in chromé mais quand je fais la requête, la réponse est toujours "nulle".

Comment puis-je récupérer une page html dans mon application angulaire en tant qu'objet json?

ngOnInit(): void { 
    // Make the HTTP request: 
    this.http.get('http://www.hurriyet.com.tr/gundem/').subscribe(data => { 

     this.results = data; 
    }); 
} 
+1

Pourquoi attendez-vous que les données soient un objet avec un attribut résultats? Quel est le type de this.http? –

+0

mon mauvais, corrigé ... –

+0

Alors maintenant, ce qui est nul? Où consignez-vous/affichez-vous la réponse pour déterminer que c'est nul? Et encore, quel est le type de this.http? –

Répondre

1

Vous devez vous assurer que l'URL de la requête se termine par .json tels que:

http://www.hurriyet.com.tr/gundem/gundem.json

Ce triera le type MIME automatiquement. Quelque chose comme ceci:

this.http.get('http://www.hurriyet.com.tr/gundem/gundem.json').subscribe(data => { 
    // Read the result field from the JSON response. 
    this.results = data['results']; 
}); 

Vous devrez peut-être utiliser data.json() dans votre code de résolution de promesse.

0
import { Injectable } from '@angular/core'; 
import { Http, Response } from '@angular/http'; 
import 'rxjs/add/operator/toPromise'; 

@Injectable() 
export class SomeService { 

    constructor(private http: Http) {} 

    getItems() { 
     return this.http.get('http://www.hurriyet.com.tr/gundem/gundem.json') 
      .toPromise() 
      .then(res => <Type[]> res.json().data) 
      .then(data => { return data; }); 
    } 
} 

export interface Type { 
    id?; 
    title?; 
} 

app.component.ts

import {SomeService} from './some.service'; 
export class AppComponent implements OnInit { 

    constructor(private someService: SomeService) { 
    } 

    ngOnInit() { 
    this.someService.getItems().then(rows => this.rows = rows); 
    } 
}