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

Реализация:

  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);

     });

И я получаю эту ошибку:

[20:49:03] console.warn: собственный: попытался вызвать HTTP.get, но плагин HTTP не установлен. [20:49:03] console.warn: установите плагин HTTP: 'ionic plugin add cordova-plugin-http'

11
Amar1989 5 Сен 2017 в 08:27

11 ответов

Лучший ответ

Если вы не хотите модифицировать плагин ionic-native, как предложено @alpere, или если решение не работает, вы всегда можете использовать плагин cordova без ionic-native. Для этого сообщите машинописному шрифту, что дескриптор http существует, добавив следующее где-то ниже ваших импортов:

declare var http;

И затем используйте это так:

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

Обратите внимание, что в this нет необходимости, потому что плагины Cordova определены в глобальной области видимости. Недостатком использования плагинов без встроенной ионной оболочки является то, что вы теряете приятные аннотации типов, обещания обратных вызовов, а в некоторых случаях вам придется самостоятельно запускать обнаружение угловых изменений.

4
David 16 Сен 2017 в 13:54

Вы когда-нибудь пытались вызвать плагин после того, как платформа готова, а затем проверить платформу?

async checkVersion() {
    const ready = !!await this.platform.ready();
    if (ready && this.platform.is('cordova')) {
        // try to add your code here
    }
}
0
Serkan KONAKCI 4 Фев 2019 в 13:08

Ionic Native HTTP изменил используемый плагин cordova, так как старый не обновлялся некоторое время. Во время изменения ссылка на плагин не обновлялась, поэтому он не работает. (См .: https://github.com/silkimen/cordova-plugin -Продвинутый -клиент / вопросы / 8 )

Вы можете исправить это, изменив старый ссылочный плагин на новый: (После фиксации также обновление плагина исправит проблему)

В @ ionic-native / plugins / http / index.ts:

Менять:

pluginRef: 'cordovaHTTP',

Чтобы :

pluginRef: 'cordova.plugin.http',

Смотрите коммит: https://github.com/ionic-team/ionic-native/commit 49ee0d85a304770a9a3bd3e04eb9609e6d565b67

3
alpere 11 Сен 2017 в 21:21

Пример закрепления SSL Ionic3 Cordova

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

В этом примере вы получите представление о том, как реализовать закрепление SSL и как создать файл .cer.

1
sijo vijayan 2 Июн 2018 в 07:17

Я бы переключился на HTTP Angular вместо Cordova HTTP. Преимущество: не требует плагинов.

< Сильный > package.json :

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

< Сильный > app.module.ts :

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

...

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

вызов .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;
    });
}

Ответ на первый комментарий:

Поскольку вам, кажется, нужен SSL Pinning, и я еще не нашел простой способ в Angular HTTP, я увидел, что ваша команда добавления плагина cordova немного отличается от команды из документации:

Вы написали:

ionic cordova plugin add cordova-plugin-http

Теперь команда выглядит так:

ionic cordova plugin add cordova-plugin-advanced-http

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

Как вы можете видеть, он поддерживает ваши потребности с помощью таких методов, как enableSSLPinning(enable).

0
Gary Klasen 18 Сен 2017 в 15:14

Если вы запускаете приложение с вашего компьютера, вы можете получить такую ошибку. Попробуйте использовать ionicdev

0
Ebuka 9 Июл 2018 в 15:05

Ионные родные плагины зависят от особенностей устройства. Поэтому из-за этого плагины, такие как http, контакты или камера не будут работать в вашем браузере. Пример такой ошибки

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

Попытайтесь найти приложение ionic для разработки приложения здесь https: // play.google.com/store/apps/details?id=io.ionic.devapp

0
Ebuka 9 Июл 2018 в 16:16

У меня такая же проблема. И мне удалось избавиться от этой ошибки, просто объявив HTTP-модуль Angular. В app / app.modules.ts

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

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

Даже если я не использую модуль Angular, это решило мою проблему.

0
Tony Constanty 29 Июл 2018 в 09:38

Попробуйте выполнить приведенную ниже команду, как указано в сообщении об ошибке, чтобы установить HTTP plugin

ionic plugin add cordova-plugin-http
0
Rajkishor Sahu 13 Сен 2017 в 07:59

Это может быть вызвано любой из этих трех проблем:

  1. Плагин не установлен;
  2. Вы запустили код в браузере (или другой ограниченной среде); или
  3. Платформа не готова (вы вызывали свой код до загрузки плагина).
2
mech 18 Сен 2017 в 20:42

Основная ветвь ионных уже исправленных pluginRef: 'cordova.plugin.http', Проблема ,

Тем не менее, если проблема не устраняется или вы не хотите изменять исходные файлы, попробуйте выполнить следующие действия, это сработало для меня.

  1. удалить существующие сборки

    rm -rf node_modules/ platforms/ plugins/ www/
    
  2. обновить ionic native до последней сборки:

    npm i --save ionic-native@latest
    

    (пожалуйста, проверьте с другими зависимостями плагина, если это проблема, попробуйте изолировать пакеты с помощью установки виртуальной среды - https: // github .com / ekalinin / nodeenv):

  3. добавьте все необходимые плагины и http-плагин ::

    ionic cordova plugin add cordova-plugin-advanced-http
    
  4. Затем, наконец, нужны ваши плагины и плагин http .

    npm install @ionic-native/http
    

Теперь ваши сборки iOS или Android должны обнаружить все плагины

1
Samuel Philipp 24 Авг 2019 в 22:28