by Jannik Olsen.
Just wanted to share my solution, in case anyone else has this problem.
Turns out it was indeed the xml structure. Enabling verbose error messages enabled me to customize the xml so it was finally accepted (see below). However, I cannot for the life of me figure out how to make the PHP functions create this XML, so for now I'll have to accept making it manually. Not that it's a big issue but it's still annoying, and I would love if someone could enlighten me on this.
Working XML:
<?xml version="1.0" encoding="iso-8859-1"?><methodCall><methodName>core_completion_get_activities_completion_status</methodName><params> <param><value><courseid><int>2257</int></courseid></value></param> <param> <value> <userid><int>7619</int></userid> </value> </param></params></methodCall>