2017-04-23 111 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