2016-09-15 30 views
14

Tôi đang cố gắng gửi yêu cầu HTTP GET từ ứng dụng Angular2/ionic2 của mình bằng cách sử dụng http.get. Yêu cầu HTTP GET chứa một mã thông báo truy cập Linkedin hợp lệ và được cho là trả về một số profiledata. Tuy nhiên, các lỗi sau xảy ra khi getProfileData() được gọi là:Góc 2: Ngoại lệ: Phản hồi với trạng thái: 0 cho 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 

Tuy nhiên:

  • Yêu cầu GET với cùng một URL công trình khi thử nghiệm trên www.hurl.it
  • Các yêu cầu GET gọi từ ứng dụng hoạt động với một URL khác, ví dụ let URL = "https://httpbin.org/get?name=hannes"

nhập môn-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

Có cùng vấn đề. điều này cực kỳ khó chịu. Vì vậy, chức năng cơ bản không hoạt động và bao gồm các trường hợp tầm thường – Roman

+0

cần sửa chữa cho – user2320607

+0

Khi sự cố này xảy ra với sự cố CORS, – LeRoy

Trả lời

9

Đây có thể là một vấn đề CORS.
Ứng dụng Angular2 của bạn được lưu trữ trên máy chủ khác so với API bạn đang gọi.

Nếu bạn muốn bỏ qua này (chỉ dành cho mục đích thử nghiệm), cài đặt this Chrome extension và thêm

Access-Control-Allow-Origin:

để tiêu đề của bạn.
Để sử dụng thực tế, bạn nên gọi API từ máy chủ của mình (Nút, PHP, Python ...) (nơi ứng dụng angular2 được lưu trữ) và chuyển dữ liệu đến angular2 APP của bạn.

+0

cảm ơn bạn đã làm việc cho tôi – mohammad

3

Như một lưu ý phụ, điều này cũng xảy ra khi máy chủ chỉ ngoại tuyến.

Tôi đã kết thúc ở đây vì tôi đã tự hỏi liệu có ý nghĩa chính thức về trạng thái 0 và URL không.

+0

Có giải pháp nào trong trường hợp máy chủ ngoại tuyến không? – Roberto

+1

Trong trường hợp của tôi, không. Để cụ thể hơn, tôi nhận được loại phản hồi này khi máy chủ 'dữ liệu' của tôi (API RESTful) không thể truy cập được. Vì vậy, không có cách nào ứng dụng Góc có thể tìm nạp bất kỳ dữ liệu nào. –

0

Chúng tôi đã có một số trong nhật ký của chúng tôi. Sau một chút đào nó có vẻ như họ đến bất cứ khi nào một yêu cầu ajax bị hủy bỏ sau khi trình duyệt bắt đầu điều hướng đến một url mới.

Các vấn đề liên quan