web-dev-qa-db-fra.com

Le plugin HTTP n'est pas installé erreur avec ionic

$ ionic cordova plugin add cordova-plugin-http
$ npm install --save @ionic-native/http

La mise en œuvre est:

  constructor(private https: HTTP ) {
  }

  this.https.get('http://ionic.io', {}, {})
  .then(data => {
   this.httpData =data;
   console.log(data.status);
   })
   .catch(error => {

     console.log(error.status);

     });

Et je reçois cette erreur:

[20:49:03] console.warn: Native: a essayé d'appeler HTTP.get, mais le plug-in HTTP n'est pas installé . [20:49:03] console.warn: Installez le plugin HTTP: 'plugin ionic add cordova-plugin-http'

8
Amar1989

Si vous ne souhaitez pas modifier le plug-in ionic-native comme suggéré par @alpere ou si la solution ne fonctionne pas, vous pouvez toujours utiliser le plug-in cordova sans ionic-native. Pour ce faire, indiquez à TypeScript que le handle http existe en ajoutant les éléments suivants quelque part sous vos importations:

declare var http;

Et puis utilisez-le comme ceci:

http.get(
  'https://ionic.io/',
  {},
  {},
  response => {
    console.log(response.status);
  },
  response => {
    console.error(response.error);
  },
);

Notez qu'il n'est pas nécessaire d'utiliser this car les plug-ins cordova sont définis sur une étendue globale. L'inconvénient de l'utilisation de plug-ins sans le wrapper ionic-native est que vous perdez les annotations de type Nice, vous promettez des rappels et, dans certains cas, vous devrez déclencher la détection de changement angulaire.

4
David

Exemple de verrouillage SSL Ionic3 Cordova

https://github.com/sijovijayan/SSL-pinning-with-ionic-cordova-example

Dans cet exemple, vous aurez une idée de la mise en œuvre du brochage SSL et de la création d'un fichier .cer.

1
sijo vijayan

Cela peut être causé par l’un de ces trois problèmes:

  1. Le plugin n'est pas installé.
  2. Vous avez exécuté le code sur un navigateur (ou un autre environnement limité); ou
  3. La plate-forme n'est pas prête (vous avez appelé votre code avant le chargement du plug-in).
1
Shing

Si vous utilisez l'application à partir de votre ordinateur, vous risquez de rencontrer une telle erreur… .. Essayez d'utiliser ionicdev

0
Ebuka

Les plugins natifs ioniques dépendent des fonctionnalités de l'appareil. Donc, à cause de cela, des plugins comme http, des contacts ou un appareil photo ne fonctionneraient pas sur votre navigateur. Un exemple d'une telle erreur est

Native: tried calling HTTP.post, but Cordova is not available. Make sure to include cordova.js or run in a device/simulator

Essayez donc de télécharger l'application de développement d'ionic ici https://play.google.com/store/apps/details?id=io.ionic.devapp

0
Ebuka

Avez-vous déjà essayé d'appeler le plug-in une fois la plate-forme prête, puis vérifiez-la?

async checkVersion() {
    const ready = !!await this.platform.ready();
    if (ready && this.platform.is('cordova')) {
        // try to add your code here
    }
}
0
Serkan KONAKCI

J'ai eu le même problème. Et j'ai réussi à supprimer cette erreur en déclarant simplement le module HTTP de Angular . Dans app/app.modules.ts

import { HttpClientModule } from '@angular/common/http';

@NgModule({
  imports: [
    // import HttpClientModule after BrowserModule.
    HttpClientModule,
  ],
})

Même si je n'utilise pas le module angulaire, cela a résolu mon problème.

0
Tony Constanty

essayez d'exécuter la commande ci-dessous comme suggéré dans le message d'erreur pour installer HTTP plugin

ionic plugin add cordova-plugin-http
0
Rajkishor Sahu

Je voudrais passer à HTTP Angular au lieu de HTTP Cordova. Avantage: ne nécessite aucun plugin.

package.json:

   "dependencies": {
        ...
        "@angular/http": "4.1.3",
        ...
   }

app.module.ts:

import { Http, HttpModule } from '@angular/http';

...

@NgModule({
  declarations: [
    MyApp,
  ],
  imports: [
    ...
    HttpModule,
    ...
  ]...

appelant .ts-class:

import { Http } from '@angular/http';

...

constructor(... , public http: Http, ...) {
    //Example: .get for a JSON and map it:
    this.http.get(url).map(res => res.json()).subscribe(data => {
        this.data = data;
    });
}

Réponse au premier commentaire:

Comme vous semblez avoir besoin de SSL Pinning et que je n’ai pas trouvé de moyen facile dans Angular HTTP, j’ai vu que votre maîtrise de l’ajout du plugin cordova diffère un peu de celle de la documentation:

Tu as écrit:

ionic cordova plugin add cordova-plugin-http

Maintenant, la commande semble être:

ionic cordova plugin add cordova-plugin-advanced-http

( https://ionicframework.com/docs/native/http/ )

Comme vous pouvez le constater, il répond à vos besoins avec des méthodes telles que enableSSLPinning(enable).

0
Gary Klasen