Simple core command line tools like nc, socat seem not to be able to handle the specific HTTP stuff going on (chunks, transfer encodings, etc.). As a result this may produce unexpected behaviour compared to talking to a real web server. So, my first thought is to share the quickest way I know of setting up a tiny web server and making it just do what you want: dump all output.
The shortest I could come up with using Python Tornado:
#!/usr/bin/env python
import tornado.ioloop
import tornado.web
import pprint
class MyDumpHandler(tornado.web.RequestHandler):
def post(self):
pprint.pprint(self.request)
pprint.pprint(self.request.body)
if __name__ == "__main__":
tornado.web.Application([(r"/.*", MyDumpHandler),]).listen(8080)
tornado.ioloop.IOLoop.instance().start()
Replace the pprint line to output only the specific fields you need, for example self.request.body or self.request.headers. In the example above it listens on port 8080, on all interfaces.
Alternatives to this are plenty. web.py, Bottle, etc.
(I'm quite Python oriented, sorry)
If you don't like its way of outputting, just run it anyway and try tcpdump like this:
tcpdump -i lo 'tcp[32:4] = 0x484f535420'
to see a real raw dump of all HTTP-POST requests. Alternatively, just run Wireshark.