Emit Content-Length: 0 for empty PUTs

HttpUrlConnection reverts Content-Length: 0 on PUT without
doOutput(true), similar to POST.  This commit allows Azure container
create to succeed.  Closes #1420.
This commit is contained in:
Andrew Gaul 2013-04-01 13:33:31 -07:00
parent f0a1054958
commit 843ed57c8a
1 changed files with 3 additions and 2 deletions

View File

@ -231,8 +231,9 @@ public class JavaUrlHttpCommandExecutorService extends BaseHttpCommandExecutorSe
protected void writeNothing(HttpURLConnection connection) { protected void writeNothing(HttpURLConnection connection) {
if (!HttpRequest.NON_PAYLOAD_METHODS.contains(connection.getRequestMethod())) { if (!HttpRequest.NON_PAYLOAD_METHODS.contains(connection.getRequestMethod())) {
connection.setRequestProperty(CONTENT_LENGTH, "0"); connection.setRequestProperty(CONTENT_LENGTH, "0");
// support zero length posts. // HttpUrlConnection strips Content-Length: 0 without setDoOutput(true)
if ("POST".equals(connection.getRequestMethod())) { String method = connection.getRequestMethod();
if ("POST".equals(method) || "PUT".equals(method)) {
connection.setFixedLengthStreamingMode(0); connection.setFixedLengthStreamingMode(0);
connection.setDoOutput(true); connection.setDoOutput(true);
} }