2017-04-23 113 views
0

我试图使用http native plugin发送来自ionic 2应用程序的HTTP put请求,但是,从doc中我只看到postget请求方法已实现。如何使用ionic2 native http插件发送HTTP PUT请求?

第一:我想知道,如果HTTP方法deleteput并没有真正实现(因为我可能不会在文档在看正确的地方)。

第二个:如果这些都没有实现,我们如何从ionic 2 app生成putdelete?是否有可能在低级别上完成,而无需修改插件本机/库代码?

在此先感谢。

更新1:没有为putdeletepostJSON实现(https://github.com/wymsee/cordova-HTTP/pull/105)的拉请求,但是从2016年9月至今2017年4月它不与主合并。

更新2:首先我要感谢@Jamil Hijjawi的答案。这解决了问题。但顺便说一下,我想提到解决方案2需要一些服务器配置来绕过CORS,所以我选择了第一个。另外还有一篇不错的文章https://www.joshmorony.com/using-cordova-plugins-in-ionic-2-with-ionic-native/,解释了如何使用不属于“Ionic Native”的cordova插件,我建议通过它。我想指出的一个部分,如:

在其中使用离子型2非离子本地插件的方式是一样的,你会用它在任何科尔多瓦项目的方式,但是这是插件的文档说你应该使用它。但是,您需要采取一些额外步骤,因为TypeScript会导致一些问题。

进一步说这说明了我们需要的插件在地方,比如declarations.d.ts所以打字稿知道关于申报出口全球的可变cordovaHTTP。一旦声明,不需要依赖注入。以下是我在随机组件函数中使用的代码片段。

@Component({ 
    selector: 'page-home', 
    templateUrl: 'home.html' 
}) 
export class HomePage { 

    constructor(
    public navCtrl: NavController, 
    private _platform: Platform 
) { 
    this._platform.ready().then(() => { 

     // ========== We need this part 
     cordovaHTTP.put('http://192.168.0.5:8081/test-route', { 
     really: "Yea!" 
     }, {}, (res: any) => { 
     console.log(res); 
     }, (err: any) => { 
     console.log(err); 
     }); 
     // ========== till here, as for the example of usage 
    }); 
    } 

} 

回答

1

选项1:

cordova-http插件只支持GETPOST,所以如果你想使用PUT直接使用此命令ionic plugin add https://github.com/spuentesp/cordova-HTTP谁做拉入请求回购https://github.com/spuentesp/cordova-HTTP笔者安装插件

但是这些API的ionic-native没有实现声明,因此您可以在012中声明cordovaHTTP命名空间并使用API​​你想

选项2:

使用在Http服务角度

this.http.put(url, JSON.stringify(hero), {headers: headers}).map(res => res.json()); 

的Http类文档https://angular.io/docs/ts/latest/api/http/index/Http-class.html

+0

谢谢你的回复,但我有声明部分存在问题。如何在declarations.d.ts中声明cordovaHTTP名称空间?你可以添加一些代码片段吗? – Musa

+1

欢迎您将'declare var cordovaHTTP:any;'添加到'declarations.d.ts'中 –

+0

我在做同样的事情,但是我得到的HTTP没有定义。我想我需要链接一些JS文件到定义文件,但是,我无法弄清楚如何 – Musa