protected RemoteOperationResult uploadFile(OwnCloudClient client) throws IOException { int status; RemoteOperationResult result; try { File f = new File(localPath); entity = new FileRequestEntity(f, mimeType); synchronized (dataTransferListeners) { ((ProgressiveDataTransfer) entity) .addDataTransferProgressListeners(dataTransferListeners); } if (requiredEtag != null && requiredEtag.length() > 0) { putMethod.addRequestHeader(IF_MATCH_HEADER, "\"" + requiredEtag + "\""); } putMethod.addRequestHeader(OC_TOTAL_LENGTH_HEADER, String.valueOf(f.length())); putMethod.addRequestHeader(OC_X_OC_MTIME_HEADER, lastModificationTimestamp); putMethod.setRequestEntity(entity); status = client.executeMethod(putMethod); result = new RemoteOperationResult(isSuccess(status), putMethod); client.exhaustResponse(putMethod.getResponseBodyAsStream()); } finally { putMethod.releaseConnection(); // let the connection available for other methods } return result; }