How to use ionic native HTTP to perform a post with body and header

Hello,

I tried your solution but it seems to not not work for me still in 2021 and i don’t understand why.

Ionic:

   Ionic CLI                     : 6.12.3 (/Users/alexismurciano/.nvm/versions/node/v10.15.3/lib/node_modules/@ionic/cli)
   Ionic Framework               : @ionic/angular 5.4.3
   @angular-devkit/build-angular : 0.1002.0
   @angular-devkit/schematics    : 10.0.8
   @angular/cli                  : 10.0.8
   @ionic/angular-toolkit        : 2.3.3

Cordova:

   Cordova CLI       : 10.0.0
   Cordova Platforms : android 9.0.0, ios 6.1.1
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.2.1, (and 9 other plugins)

Utility:

   cordova-res (update available: 0.15.3) : 0.15.1
   native-run                             : 1.3.0

System:

   ios-deploy : 1.11.4
   ios-sim    : 8.0.2
   NodeJS     : v10.15.3 (/Users/alexismurciano/.nvm/versions/node/v10.15.3/bin/node)
   npm        : 6.4.1
   OS         : macOS Catalina
   Xcode      : Xcode 12.4 Build version 12D4e
 dependencies 
     "@ionic-native/http": "^5.30.0",
 dev-dependencies 
     "cordova-plugin-advanced-http": "^3.1.0",

On Android no problem this code will work :

 import { HTTP } from '@ionic-native/http/ngx';
 ...
     this.http.post(url, input, {})
         .then(data => {console.log("test",data)})
         .catch(error => console.log("test",error));

On ios it’s not working even if i add serializer and header like that :


  this.http.setDataSerializer('json');
     this.http.post(url, input, {"Content-Type": "application/json"})
         .then(data => {console.log("test",data)})
         .catch(error => console.log("test",error));

The only way i found to make it work is to remove all serializer and headers and stringify subObject, like that (using url-encoded by default i assume) :


 const input = {
      'transactionData': JSON.stringify(objectOrder), 
      'clientData': JSON.stringify(userInfos) // ios n'aime pas les objets en direct ?? json.stringify
    }; // la langue sera envoyé mais pas visible dans les paramètres get
       this.http.post(url, input, {})
        .then(data => {console.log("test",data)})
        .catch(error => console.log("test",error));

Thanks for everyone who can help me figure this out ( and understand it also ^^)