HTTP iOS url string

Hi, I try to deal with the native HTTP and pass some data via get to a server. On android it works without any problem.
On iOS there is unfortunately this error:

***** Assertion failure in -[AFHTTPRequestSerializer requestWithMethod:URLString:parameters:error:], /Users/.../Plugins/cordova-plugin-advanced-http/AFURLRequestSerialization.m:347**

A search brought that the problem should be in the provided url, but on Android the same url is no problem.
Here is a demo-url which crashes:

http://demo.com/app-set.php?id=GOZFGHET&klasse=3&stunde=112&uebungen=[{"title":"Hampelmann","uebung":"","saetze":3,"wiederholungen":10,"done":false}]&wow_id=QVTOPGLD

Could there be something with this url?

‘[’, ‘]’, ‘{’, ‘}’, and ‘,’ are all reserved and must be encoded. Might be easier in the long run to get all of that junk out of the URL and into the body of the request.

Ok, that sounds comprehensible.
So I’ve to do a POST request, right?

I tried that now, but dind’t get it working. I checked the repo of the HTTP native plugin and the ionic native site, but this was what I finally tried:

let postData = new FormData()
  postData.append('s_id',this.s_id)
  postData.append('klasse',this.klasse.id)
  postData.append('stunde',this.stunde.id)
  postData.append('uebungen',JSON.stringify(this.uebungen))
  postData.append('wo_id',woid)

const options = {
    headers: {
        'Content-Type': 'application/json'
    }
};

this.http.post(
      'URL.php/', 
      postData,
      options
     )
     .then(response => {
        // prints 200
        console.log("Response-Status: "+response.status);
        try {
          response.data = JSON.parse(response.data);
          // prints test
          console.log("Response-Message: "+response.data.message);
        } catch(e) {
          console.error('JSON parsing error');
        }
     })
     .catch(response => {
       // prints 403
       console.log("Response-Status: "+response.status);
       // prints Permission denied
       console.log("Response-Error: "+response.error);
      }
     });

Have I forgotten something?
The error-logs are just: null or undefined

Thanks!

That’s what I would do, but of course the backend needs to agree.

These two things are incompatible. If you were using ordinary HttpClient, it would deal with setting Content-Type for you. I don’t know if that’s the case with the cordova client, but in any event, if you’re going to pass JSON, pass an object, and if you’re going to use FormData, then the content type needs to be application/x-www-form-urlencoded.

Thanks for the hint!
Unfortunately it’s still not working.
I think the error comes from my php-script:
{"__zone_symbol__currentTask":{"type":"microTask","state":"notScheduled","source":"Promise.then","zone":"angular","cancelFn":null,"runCount":0}}
But I don’t find any solution how to fix this or where it comes from.