2017-09-02 77 views
1

我可以在AngularDart中使用公共API進行通信,但不能使用本地API進行通信。如何使用AngularDart與本地API進行通信

String _url = 'localhost:8000/kanji_detail/1000/?format=json'; 
String _url = "http://jsonplaceholder.typicode.com/posts/1"; 

我可以從兩個URL JSON的信息在我的瀏覽器,但可以在AngularDart與第二URL進行連接。我嘗試了http方法和客戶端,而不是BrowserClient,並且這些代碼僅在使用BrowserClient和公共API時才起作用。

下面是代碼:

import "dart:async"; 
import 'dart:convert'; 

import 'package:angular2/angular2.dart'; 
//import 'package:http/http.dart' as http; 
import 'package:http/browser_client.dart'; 


@Component (
    selector: "test", 
    template: """ 
    <button (click)="change_info()">{{info}}</button> 
    """, 
) 
class Test { 
    BrowserClient client = new BrowserClient(); 
    //var client = new http.Client(); 
    String info = "default info"; 
    String _url = 'http://127.0.0.1:8000/kanji_detail/1000/?format=json'; 
    //String _url = "http://jsonplaceholder.typicode.com/posts/1"; 

    Future get_info() async { 
    var response = await client.get(_url); 
    info = JSON.decode(response.body); 
    //return JSON.decode(response.body); 
    } 

    change_info() { 
    get_info(); 
    } 

} 
+1

我假設你在瀏覽器控制檯的錯誤消息。此錯誤消息將有所幫助。我還假定原因是本地服務器不返回瀏覽器期望的CORS頭。當域或端口不同時,瀏覽器需要響應請求中的一些標題,然後加載代碼。搜索CORS以瞭解更多信息(非常常見的主題) –

+0

嗨,感謝提示,服務器沒有返回CORS頭是問題,我通過配置服務器解決了問題。控制檯沒有顯示任何錯誤順便說一句。 –

+0

有趣的是,如果請求失敗,bowser肯定應該顯示錯誤。很高興聽到你可以使它工作無論如何。 –

回答

0

問題是不是角鏢,但它在我的情況是在服務器配置,Django的。我通過啓用CORS頭配置和白名單我的本地主機來解決它。在Django I中:

  1. 在終端中安裝了django-cors-header模塊。

    PIP安裝Django-CORS-頭

  2. 添加模塊到安裝的應用程序列表。

    INSTALLED_APPS =( ... 'corsheaders', ... )

  3. 添加中間件類到配置

    MIDDLEWARE_CLASSES =( ... 「corsheaders.middleware .CorsMiddleware', ... )

  4. 並將本地主機列入白名單。

    CORS_ORIGIN_WHITELIST =( 的 'localhost:8080', '127.0.0.1:8080' )

相關問題