它的一些優點如下:
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以及設置標頭。您可以在此處查看更多信息。
沒有留言:
張貼留言