I really don't think httpie's stdin can in any way be described as empty in this case. It is open and waiting for data that may be at any time passed from the terminal connected to ssh's stdin.
You can run this command then go for a lunch and after coming back type Hello, World!, press Enter and Ctrl-D to signal EOF and your cheerful message will then be POSTed.

A less verbose workaround for this case would be ssh -t 192.168.1.1 http :8080 to make httpie stdin be a terminal.

Of course you are correct about stdin. What I found with ssh -t is that it also messes with stdout by adding terminal escape codes with -j output. However, you led me to try this which is perfectly json pipe-able for me: ssh -n 192.168.1.1 http GET :8080

Yes, the stdout is also connected to a terminal then, so -t is not really nice for redirecting output. Of course you can do ssh -t 192.168.1.1 http --pretty none :8080, but this brings you back to verbose, and possibly confusing.