2016-07-31 54 views
0

我对angular2 + nativescript项目的工作使用该种子项目,我不能够使用这个代码Natviescript Angular2 HTTP

return this.http.post(`${AppConfigService.API_PATH}/login`, body, options) 
      .map(res => res.json()) 
      .catch((err: any) => { 
      return Observable.throw(err); 
      }); 

这段代码做一个简单的HTTP POST调用正常angular2应用程序,但在正常工作本地脚本它给人的错误: 与状态响应:200网址:空

我也登录在Github上的问题:https://github.com/NativeScript/NativeScript/issues/2536

+0

你有没有解决这个问题?我与这个相同的问题,我不知道该怎么做。 –

回答

-1

您需要使用NativeScript HTTP模块,here是文档。不同的移动平台对常规浏览器的工作方式不同,因此您需要{N}核心模块来管理不同的平台特定的API。 一个JSON POST是这样的:

var result; 

http.request({ 
    url: "https://httpbin.org/post", 
    method: "POST", 
    headers: { "Content-Type": "application/json" }, 
    content: JSON.stringify({ MyVariableOne: "ValueOne", MyVariableTwo: "ValueTwo" }) 
}).then(function (response) { 
    // result = response.content.toJSON(); 
    // console.log(result); 
}, function (e) { 
    // console.log("Error occurred " + e); 
}); 

,你必须确保你使用var http = require("http");

-1

可以使用nativescript HTTP具有角,下面的例子:

首次导入HTTP服务于顶部服务组件

var http = require("http"); 

在sevice.ts文件中,您需要将http承诺转换为observable。

//GET Example 
    getList(): Observable<News[]> { 
     return Observable.fromPromise(
        http.getJSON(serverConfig.apiUrl+"news") 
       ).map(function(res:any) { 
        console.log('finished sendign request'); 
        return res as News[] 
       }); 

    } 


//POST EXAMPLE 

submitFormData(data): Observable<Forms> { 
     let url:string=serverConfig.apiUrl+"forms/"; 
     let headers:any = { 'Content-Type': 'application/json', 'Authorization': 'Bearer '+this.appSettings.getString("access_token")}; 
     let req:any={ 
      url:url, 
      method: "post", 
      headers:headers, 
      content: JSON.stringify(data) 
     }; 

     return Observable.fromPromise(
        http.getJSON(req) 
       ).map(function(res:any) { 
        return res as Forms 
       }); 
    } 

那么你befor使用您可以订阅observeable,

this.newsService.getList().subscribe((res) => { 
    this.news= res; 
}); 

注:现在你可以删除角HTTP进口statment因为它不需要