That's probably because the content type was not set. From the Play sourcecode:

    _.contentType.exists(m => m.equalsIgnoreCase("text/json") || m.equalsIgnoreCase("application/json"))