Enviar un archivo con una solicitud PUT utilizando una conexión HttpURLConnection

Estoy tratando de hacer algo relativamente simple. Necesito hacer una solicitud PUT simple con un archivo en el cuerpo para cargar un archivo a un servidor que no esté bajo mi control. Aquí está el código que tengo hasta ahora:

connection = ((HttpURLConnection)new URL(ticket.getEndpoint()).openConnection());
connection.setRequestMethod("PUT");
connection.setRequestProperty("Content-Type", "video/mp4");
connection.setRequestProperty("Content-Length", String.valueOf(getStreamFile().length()));
connection.setUseCaches(false);
connection.setDoOutput(true);

connection.connect();

outputStream = connection.getOutputStream();

streamFileInputStream = new FileInputStream(getStreamFile());
streamFileBufferedInputStream = new BufferedInputStream(streamFileInputStream);

byte[] streamFileBytes = new byte[getBufferLength()];
int bytesRead = 0;
int totalBytesRead = 0;

while ((bytesRead = streamFileBufferedInputStream.read(streamFileBytes)) > 0) {
    outputStream.write(streamFileBytes, 0, bytesRead);
    outputStream.flush();

    totalBytesRead += bytesRead;

    notifyListenersOnProgress((double)totalBytesRead / (double)getStreamFile().length());
}

outputStream.close();

logger.debug("Wrote {} bytes of {}, ratio: {}", 
        new Object[]{totalBytesRead, getStreamFile().length(), 
            (double)totalBytesRead / (double)getStreamFile().length()});

Estoy viendo mi administrador de red y no se envía nada cerca del tamaño de mi archivo. De hecho, no sé si algo se está enviando en absoluto , pero no veo ningún errores generados.

Necesito poder enviar esta solicitud y también medir el estado de la carga sincrónicamente, para poder informar a mis oyentes sobre el progreso de la carga. ¿Cómo puedo modificar mi ejemplo existente para simplemente trabajar ™?

Respuesta 1

Estoy haciendo un desafío de hackernet donde n es una entrada int. Las condiciones son: Si n es impar, imprime Extraño Si n es par y en el rango inclusivo de 2 a 5, imprime No Extraño Si n es par y en el ...

Me gustaría saber qué API de Eclipse se llaman para obtener la lista de métodos de una interfaz determinada Y el código genera la lista en una clase que implementa la interfaz. Básicamente me gustaría ...

Tenemos una pequeña aplicación de búsqueda en contexto local. Para los servicios de respaldo, estamos usando Apache Solr 6.6.2 para el índice y el almacenamiento de datos. El front-end está en PHP con el servidor web Apache2. Tenemos un servidor de 48 núcleos ...

Estoy trabajando para lanzar Amazon Mechanical Turk en Java. Este es el enlace para el proyecto. (mturk-rest-java-1.0.zip se puede descargar en la parte inferior del sitio) http: //aws.amazon.com/code/Amazon -...