$ 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'
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.
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.
Cela peut être causé par l’un de ces trois problèmes:
Si vous utilisez l'application à partir de votre ordinateur, vous risquez de rencontrer une telle erreur… .. Essayez d'utiliser ionicdev
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
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
}
}
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.
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
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)
.