Most people find Ethereal to be quite helpful. If the app runs on a separate device (phone, etc) you may need to insert yourself as a proxy to see the packets. And if the protocol uses TLS, you also need the certificates to be able to decode the payload.
Another option is to install/use libpcap on the device in question. (This is like the tcpdump tool, in a library.) Then capture the pcap log and analyze it in Ethereal.
Finally, you can use tricks like LD_PRELOAD to insert a library that implements the networking API, and captures the data before it's handed off to the sockets. How this works, depends on which OS/device you're using.