Index: trunk/src/org/openstreetmap/josm/io/OsmServerReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerReader.java	(revision 12710)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerReader.java	(revision 12711)
@@ -174,4 +174,5 @@
                     .setFinishOnCloseOutput(false)
                     .setReasonForRequest(reason)
+                    .setOutputMessage(tr("Downloading data..."))
                     .setRequestBody(requestBody);
             activeConnection = client;
Index: trunk/src/org/openstreetmap/josm/io/ProgressOutputStream.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/ProgressOutputStream.java	(revision 12710)
+++ trunk/src/org/openstreetmap/josm/io/ProgressOutputStream.java	(revision 12711)
@@ -31,6 +31,20 @@
      */
     public ProgressOutputStream(OutputStream out, long size, ProgressMonitor progressMonitor, boolean finishOnClose) {
+        this(out, size, progressMonitor, tr("Uploading data ..."), finishOnClose);
+    }
+
+    /**
+     * Constructs a new {@code ProgressOutputStream}.
+     *
+     * @param out the stream to monitor
+     * @param size the total size which will be sent
+     * @param progressMonitor the monitor to report to
+     * @param message the message that will be displayed by the inner {@link StreamProgressUpdater}
+     * @param finishOnClose whether to call {@link ProgressMonitor#finishTask} when this stream is closed
+     * @since 12711
+     */
+    public ProgressOutputStream(OutputStream out, long size, ProgressMonitor progressMonitor, String message, boolean finishOnClose) {
         this.updater = new StreamProgressUpdater(size,
-                progressMonitor != null ? progressMonitor : NullProgressMonitor.INSTANCE, tr("Uploading data ..."));
+                progressMonitor != null ? progressMonitor : NullProgressMonitor.INSTANCE, message);
         this.out = out;
         this.finishOnClose = finishOnClose;
Index: trunk/src/org/openstreetmap/josm/tools/HttpClient.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/HttpClient.java	(revision 12710)
+++ trunk/src/org/openstreetmap/josm/tools/HttpClient.java	(revision 12711)
@@ -53,4 +53,5 @@
     private boolean useCache;
     private String reasonForRequest;
+    private String outputMessage = tr("Uploading data ...");
     private HttpURLConnection connection; // to allow disconnecting before `response` is set
     private Response response;
@@ -115,5 +116,6 @@
             connection.setDoOutput(true);
             try (OutputStream out = new BufferedOutputStream(
-                    new ProgressOutputStream(connection.getOutputStream(), requestBody.length, progressMonitor, finishOnCloseOutput))) {
+                    new ProgressOutputStream(connection.getOutputStream(), requestBody.length,
+                            progressMonitor, outputMessage, finishOnCloseOutput))) {
                 out.write(requestBody);
             }
@@ -622,4 +624,16 @@
 
     /**
+     * Sets the output message to be displayed in progress monitor for {@code PUT}, {@code POST} and {@code DELETE} methods.
+     * Defaults to "Uploading data ..." (translated). Has no effect for {@code GET} or any other method.
+     * @param outputMessage message to be displayed in progress monitor
+     * @return {@code this}
+     * @since 12711
+     */
+    public HttpClient setOutputMessage(String outputMessage) {
+        this.outputMessage = outputMessage;
+        return this;
+    }
+
+    /**
      * Sets whether the progress monitor task will be finished when the output stream is closed. This is {@code true} by default.
      * @param finishOnCloseOutput whether the progress monitor task will be finished when the output stream is closed
