I can only guess, but are you sure you set up the https termination correctly? I would try http first. And after you solve that, ensure you handle CORS correctly or serve the client HTML script from the server, as the base address must match in order not to trigger CORS.
fphttpserver / fphttpapp does not do any automatic body conversion and the request content should be readable as is, provided it's actually gone through. As an example, using curl I can even hit broken JSON to your code:
$ curl localhost:8000/ -H 'content-type: application/json' -d '[{"x":"y"]'
and it gets printed just fine.