它的一些優點如下:
1.後台線程:所有請求都像本地應用程序一樣在後台線程中完成。
2.HTTP代碼401的處理:在未經授權訪問服務器時,使用基於JavaScript的HTTP調用未正確處理該錯誤代碼401,但未正確訪問服務器。
3.SSL固定:固定用於提高服務的安全性。它用於創建進行通信的安全身份。
在這裡,我們將blank通過運行以下命令使用模板創建一個新的Ionic應用程序:
ionic start ionicHTTP blank
cd ionicHTTP
安裝本機HTTP插件
$ ionic cordova plugin add cordova-plugin-advanced-http $ npm install @ionic-native/http
導入應用程序模塊
要在應用程序中使用HTTP方法,請打開app.module.ts文件以導入HTTP類,然後添加provider數組,如下所示:
//app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
 
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
 
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
 
import { HTTP } from '@ionic-native/http/ngx';
 
@NgModule({
  declarations: [AppComponent],
  entryComponents: [],
  imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
  providers: [
    StatusBar,
    SplashScreen,
    HTTP,
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}
要在組件中使用HTTP Native插件,請首先導入HTTP類,然後添加constructor來使用其方法:
//home.page.ts
import { Component } from '@angular/core';
 
import { HTTP } from '@ionic-native/http/ngx';
 
@Component({
  selector: 'app-home',
  templateUrl: 'home.page.html',
  styleUrls: ['home.page.scss'],
})
export class HomePage {
 
  constructor(
    private http: HTTP
  ) {
...
...
}
此本機插件的 HTTP 類提供了一些同步和異步方法:
異步功能
這種功能的類別包括 sendRequest 將方法,如 post,get,put,patch,delete,head,uploadFile和 downloadFile。
它們與前兩個參數採用URL和對options像一起使用,後兩個參數與success和error回調一起使用。
檢查此常見格式以進行 sendRequest HTTP 調用:
this.http.sendRequest('https://google.com/',
      {
        method: 'post',
        data: { id: 12, message: 'test' },
        headers: { Authorization: 'OAuth2: token' },
        timeout: 5000
      }
    )
      .then(response => {
        // prints 200
        console.log(response.status);
      })
      .catch(response => {
        // prints 403
        console.log(response.status);
 
        // prints Permission denied
        console.log(response.error);
      });
 
成功回調
then()方法返回具有4個屬性的對象:
status是HTTP響應代碼,為數字值。
data是來自服務器的字符串響應。
url是任何重定向後以字符串形式獲得的最終URL。
標頭是帶有標頭的對象。
{
  status: 200,
  data: '{"id": 12, "message": "test"}',
  url: 'http://example.net/rest'
  headers: {
    'content-length': '247'
  }
}
失敗回調
catch()方法返回具有4個屬性的對象:
status是HTTP響應代碼,是一個數字值。
錯誤是服務器以字符串形式返回的錯誤響應。
url是任何重定向後以字符串形式獲得的最終URL。
標頭是帶有標頭的對象。
{
  status: 403,
  error: 'Permission denied',
  url: 'http://example.net/noperm'
  headers: {
    'content-length': '247'
  }
}
我們還可以使用特定的請求類型:
請求類型POST,GET,PUT,PATCH,DELETE和HEAD佔用3個參數對象:
網址:URL來發送請求
參數:參數與請求發送
標題:標題來設置此要求
例如,下面是使用POST來自API端點的JSON數據響應的方法:
    this.http.post(
      'https://google.com/',             //URL
      {id: 12, message: 'test'},         //Data 
      { Authorization: 'OAuth2: token' } // Headers
     )
     .then(response => {
        // prints 200
        console.log(response.status);
        try {
          response.data = JSON.parse(response.data);
          // prints test
          console.log(response.data.message);
        } catch(e) {
          console.error('JSON parsing error');
        }
     })
     .catch(response => {
       // prints 403
       console.log(response.status);
 
       // prints Permission denied
       console.log(response.error);
     });
上傳文件
為了將文件保存在服務器上,我們使用uploadFile帶有4個參數的方法:
網址:URL來發送請求
體:該請求的主體
頭:標頭為此請求設置
文件路徑:要上傳的文件的本地路徑
名:參數的名稱傳遞下去作為文件
    this.http.uploadFile(
      'https://google.com/',
      { id: '12', message: 'test' },
      { Authorization: 'OAuth2: token' },
      'file:///somepicture.jpg',
      'myPictureName'
    )
      .then(response => {
        // prints 200
        console.log(response.status);
      })
      .catch(response => {
        // prints 403
        console.log(response.status);
        // prints Permission denied
        console.log(response.error);
      });
下載文件
要從服務器下載文件,有一種downloadFile方法需要四個參數:
url:將請求發送到
正文的url :請求
標頭的正文:為此請求設置的標頭
filePath:下載文件的路徑,包括文件名。
    this.http.downloadFile(
      'https://google.com/',
      { id: '12', message: 'test' },
      { Authorization: 'OAuth2: token' },
      'file:///somepicture.jpg'
    )
      .then(response => {
        // prints 200
        console.log(response.status);
      })
      .catch(response => {
        // prints 403
        console.log(response.status);
        // prints Permission denied
        console.log(response.error);
      });
Ionic的Native HTTP插件還提供了同步功能,用於獲取身份驗證標頭,設置或獲取Cookie以及設置標頭。您可以在此處查看更多信息。
 
沒有留言:
張貼留言