Error de excepción de volea cuando el código de respuesta 304 y 200

Jugando con la biblioteca Volley, me di cuenta de eso al hacer un POSTJsonObjectRequest , si el servidor devuelve un código 304 o 200 sin datos en la respuesta(response.data), Volley lo interpreta como una respuesta de error, en lugar de un éxito.

Logré resolverlo agregando un par de líneas de código en el métodoResponse<JSONObject> parseNetworkResponse(NetworkResponse response) en la claseJsonObjectRequest.java.

@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
    try {
        if (!response.notModified) {// Added for 304 response
            String jsonString = new String(response.data,
                    HttpHeaderParser.parseCharset(response.headers));
            return Response.success(new JSONObject(jsonString),
                    HttpHeaderParser.parseCacheHeaders(response));
        } else // Added for 304 response
            return Response.success(new JSONObject(),HttpHeaderParser.parseCacheHeaders(response));
    } catch (UnsupportedEncodingException e) {
        Log.v("Volley", "UnsupportedEncodingException " + response.statusCode);
        if (response.statusCode == 200)// Added for 200 response
            return Response.success(new JSONObject(), HttpHeaderParser.parseCacheHeaders(response));
        else
            return Response.error(new ParseError(e));
    } catch (JSONException je) {
        Log.v("Volley", "JSONException " + response.statusCode);
        if (response.statusCode == 200)// Added for 200 response
            return Response.success(new JSONObject(),HttpHeaderParser.parseCacheHeaders(response));
        else
            return Response.error(new ParseError(je));
    }
}

¿Es la mejor solución para este problema?

¡Gracias!

EDITAR

Comprobando la claseBasicNetwork.java Me di cuenta de que Volley verifica si una respuesta no tiene datos al preguntar sihttpResponse.getEntity() != null.

// Some responses such as 204s do not have content. We must check.
    if (httpResponse.getEntity() != null) {
        responseContents = entityToBytes(httpResponse.getEntity());         
    } else {// Add 0 byte response as a way of honestly representing a
    // no-content request.
        responseContents = new byte[0];
    }

Pero el problema sigue siendo la JSONException que ocurre cuando Volley intenta crear una nueva cadena conresponse.data == new byte[0] en el método parseNetworkResponse.

Respuestas a la pregunta(1)

Su respuesta a la pregunta