2016-08-08 43 views
2

Ich versuche, die Instagram API zu verwenden, um ein Foto zu bekommen. Leider scheint es, dass es ein wenig schwierig ist, mit CORS Problem its fertig zu werden. Also habe ich mir vorgenommen, Jsonp.get zu verwenden, um es zu übergeben.AUSNAHME: Antwort mit Status: 200 Ok für URL:

Hier ist mein Service:

import {Http,Headers} from '@angular/http'; 
import {Observable} from 'rxjs/Observable'; 
import 'rxjs/add/operator/map'; 
import {Injectable} from '@angular/core'; 
import {Gallery} from './gallery'; 
import {Jsonp} from '@angular/http'; 

@Injectable() 
export class InstagramService{ 

    constructor(private _http:Http,private _jsonp: Jsonp){   

    } 

    getGallery(username: string) : Observable<Gallery> { 

     return this._jsonp.get("https://www.instagram.com/justinbieber/media/").map(res => res.json());                    
    } 
} 

Das Problem ist, wenn ich meinen Code ausführen i mit dem Fehler konfrontiert:

EXCEPTION: Response with status: 200 Ok for URL: https://www.instagram.com/justinbieber/media/ 

Also, was ist dieser Fehler? Wie kann ich es beheben?

Point: ich die URL bin mit:

https://www.instagram.com/justinbieber/media/ 

Es spielt keine Authentifizierung benötigen, können Sie es in Ihrem Browser oder Postbote versuchen. Und ich bin nur daran interessiert zu Get Anfrage benötige ich nicht post oder usw.

+0

JSONP nicht unterstützt wird für diese URL, da Sie auf der Serverseite tun, tun Sie einfach regelmäßig http.get, sollte es funktionieren – krisrak

+0

@krisrak, wenn ich hhtp.get verwenden, beschwert sich mit Cors. und ich kann nichts mit cors machen. Ich bin da? – user5363938

+0

sollte es funktionieren, ich habe die gleiche URL mit Python ohne Probleme verwendet, CORS ist ein Problem, wenn Sie auf der Client-Seite mit Javascript aufrufen, aber auf der Serverseite sollte es kein Problem sein – krisrak

Antwort

0

Ihre Implementierung von jsonp sieht gut aus. was Ihr fehlt listet sie als providers ähnlich wie HTTP_PROVIDERS wie dies in Ihrer Komponente:

import {JSONP_PROVIDERS, Jsonp} from '@angular/http'; 

@Component({ 
    //... 
    providers : [JSONP_PROVIDERS] 
}); 

dann können Sie mit subscribe beobachtbaren verbrauchen.

+0

es ist ein Service so gibt es keine Komponente – user5363938

+0

Dann versuchen Sie es in 'Bootstrap'-Methode in' main.ts' Datei hinzufügen. – candidJ

+0

hat es geholfen? @ user5363938 – candidJ

0

können Sie versuchen, die beiden Lösungen

  1. https://www.instagram.com/justinbieber/media/

    getResponse() addHeader ("Access-Control-Allow-Origin", "*").

    _jsonp ---> http

  2. Änderung der JSON-String Beispiel:

    alte string: "{id: 1, Name: 32}"

    neue Zeichenfolge:“__ng_jsonp__ .__ req1.finished ( {id: 1, Name: 32} ) "