angular - ionic 3 中的 HTTP 问题

标签 angular cordova typescript http ionic-framework

我正在使用 ionic 3 制作一个应用程序,我想使用 HTTP 模块。我使用的是Ionic框架的官方文档。

链接:https://ionicframework.com/docs/native/http/

我执行了这些命令:

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

到目前为止一切顺利。然后我将这个模块添加到我的 app.module.ts 文件中,代码如下所示:

import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler, NgModule } from '@angular/core';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
import { SplashScreen } from '@ionic-native/splash-screen';
import { StatusBar } from '@ionic-native/status-bar';    
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import { ResultstatsPage } from '../pages/resultstats/resultstats';
import { HTTP } from '@ionic-native/http';

@NgModule({
  declarations: [
    MyApp,
    HomePage,
    ResultstatsPage
  ],
  imports: [
    BrowserModule,   
    IonicModule.forRoot(MyApp),
    HTTP    
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage,
    ResultstatsPage
  ],
  providers: [
    StatusBar,
    SplashScreen,
    {provide: ErrorHandler, useClass: IonicErrorHandler}
  ]
})
export class AppModule {}

我用这样的 HTTP 做了一个函数:

getStats(){
   this.http.get(this.url, {}, this.apikey)
  .then(data => {

    console.log(data.status);
    console.log(data.data); // data received by server
    console.log(data.headers);

  })
  .catch(error => {

    console.log(error.status);
    console.log(error.error); // error message as string
    console.log(error.headers);

  });
  }

当我使用 ionic serve 运行应用程序时出现错误(见屏幕截图)

error

我尝试了多种解决方案,但都没有解决问题。有人能指出我正确的方向吗?

最佳答案

根据这个:https://ionicframework.com/docs/native/http/

您不在 app.module.ts 中导入 import { HTTP } from '@ionic-native/http'; 而是在组件(或者更确切地说是服务) 这将进行 api 调用。

在 Angular 上等价于(3 个不同的文件)(在 app.module.ts 中)

 import {HttpClientModule} from '@angular/common/http';
 ...
 providers: [
    HttpClientModule,
    ...

api.service.ts 中:

import {HttpClient, HttpErrorResponse, HttpHeaders, HttpParams, HttpResponse} from '@angular/common/http';
...
getItems(): any{
  const apiURL = `${this.API_URL}/items`;
  this.items =
   this._http
    .get(apiURL)
    .catch(this.handleError);
  return this.items;
}

handleError(error: HttpErrorResponse) {
  console.log('an http get error happened.');
  console.error(error);
  let errorMessage;
  if (error.error instanceof Error) {
    errorMessage = `An error occurred: ${error.error.message}`;
  } else {
    errorMessage = `Server returned code: ${error.status}, error message is: ${error.message}`;
  }
  console.error(errorMessage);
  return errorMessage;
}

my.component.that.calls.api 中:

this.apiservice.getItems().subscribe(returnData => {
  if(returnData !== null && returnData !== undefined) if(returnData .length > 1){
    // do something with returnData 
    console.log(returnData);
  }
}, (error) => console.log(error), () => {});

关于angular - ionic 3 中的 HTTP 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50003215/

相关文章:

javascript - 如何获取 RxJS Subject 或 Observable 的当前值?

javascript - 限制 CSS 网格中的行数

javascript - Angular2 从 ngFor 绑定(bind) ngModel

node.js - 从服务器的 header 中获取 header token

带有卡片的 Angular 2 Material 网格列表

javascript - Angular2 CLI 中出现意外标记 <

android - phonegap 2.2.0 无法通过 Android 上的 "Device is Ready"屏幕

javascript - Cordova SQLite : Cannot read property 'transaction' of null

android - 我可以使用 Phonegap/cordova 框架复制目录吗?

typescript - 基于另一个属性的通用映射类型属性