Bah, always seem to solve these as soon as I post them! This seems to get the data fine:
var data = String.Empty;
using (var receiveStream = context.Request.InputStream)
{
using (var readStream = new StreamReader(receiveStream, Encoding.UTF8))
{
data = readStream.ReadToEnd();
}
}