If body is provided as an InputStream, length is not calculated before the request, and must be set manually.