2016-09-15 1 views
14

Ich versuche, eine HTTP GET-Anfrage von meiner Angular2/ionic2 App mit http.get zu senden. Die HTTP-GET-Anforderung enthält ein gültiges Linkedin-Zugriffstoken und soll einige profilierte Daten zurückgeben. Allerdings tritt der folgende Fehler auf, wenn getProfileData() genannt wird:Angular 2: AUSNAHME: Antwort mit Status: 0 für URL: null

3  229881 group EXCEPTION: Response with status: 0 for URL: null 
4  229895 error EXCEPTION: Response with status: 0 for URL: null 
5  229909 groupEnd 
6  229950 error Uncaught Response with status: 0 for URL: null, http://192.168.178.49:8100/build/js/app.bundle.js, Line: 95774 

Still:

  • Die GET-Anforderung mit der gleichen URL funktioniert, wenn auf www.hurl.it getestet
  • Die Anforderung GET genannt von Die App funktioniert mit einer anderen URL, z let URL = "https://httpbin.org/get?name=hannes"

Onboarding-load.ts:

import { Component } from '@angular/core'; 
import { NavController, Platform, Alert } from 'ionic-angular'; 
import { OnboardingHelloPage } from '../onboarding-hello/onboarding-hello'; 
import { CordovaOauth, LinkedIn } from 'ng2-cordova-oauth/core';  
import { Http, Headers, RequestOptions } from '@angular/http'; 
import 'rxjs/add/operator/map' 


@Component({ 
    templateUrl: 'build/pages/onboarding-load/onboarding-load.html', 
}) 
export class OnboardingLoadPage { 
    private data; 
    private code; 

constructor(private navCtrl: NavController, private platform: Platform, private http: Http) { 
    this.http = http; 
    this.navCtrl = navCtrl; 
    } 

public getProfileData() { 
    let URL = "https://api.linkedin.com/v1/people/~?oauth2_access_token=SOMEVALIDTOKEN&format=json"; 
    //let URL = "https://httpbin.org/get?name=hannes" 

    this.http.get(URL) 
    .map(res => res.json()) 
    .subscribe(data => { 
     this.data = data; 
     console.log(JSON.stringify(data)); 
    }); 
    // go to next page 
    this.viewOnboardingHello(); 
} 
... 
} 
+0

Haben Sie das gleiche Problem. das ist extrem nervig. So grundlegende Funktionalität funktioniert nicht und decken triviale Fälle – Roman

+0

brauchen eine Lösung für diese – user2320607

+0

Wenn dieses Problem auftritt, ist es normalerweise ein CORS-Problem, – LeRoy

Antwort

9

Es ist wahrscheinlich eine CORS Frage.
Ihre Angular2-APP wird auf einem anderen Server als der API gehostet, die Sie anrufen.

Wenn Sie dies umgehen möchten (nur für Testzwecke), installieren this Chrome extension und fügen

Access-Control-Allow-Origin:

auf Ihre Header.
Für den tatsächlichen Gebrauch sollten Sie die API von Ihrem Server (Node, PHP, Python ...) aufrufen (wo die angular2 APP gehostet wird) und Daten an Ihre angular2 APP übergeben.

+0

Vielen Dank, dass für mich arbeitete – mohammad

3

Als eine Randnotiz geschieht dies auch, wenn der Server gerade offline ist.

Ich bin hier gelandet, weil ich mich gefragt habe, ob es eine offizielle Bedeutung für Status 0 und URL null gibt.

+0

Gibt es eine Lösung für den Fall, dass der Server offline ist? – Roberto

+1

In meinem Fall, nein. Um genauer zu sein, bekomme ich diese Art von Antwort, wenn mein "Daten" -Server (eine REST-konforme API) nicht erreichbar ist. Die Angular App kann also keine Daten abrufen. –

0

Wir hatten einige davon in unserem Protokoll. Nach einem kleinen Graben scheint es, als kämen sie immer dann, wenn eine Ajax-Anfrage abgebrochen wird, nachdem der Browser zu einer neuen URL navigiert ist.

Verwandte Themen