Java - запрос PUT HttpURLConnection с пустым телом - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь сделать запрос с Java, когда я вызываю его, используя cURL, вот так:

curl -X PUT http://serverurl.com/method/6eb276a2-5c79-4f6e-a4b5-a26b0e6848c7/action  -H 'Content-Type: application/json' -H 'Token: cba5f12c-af55-480f-970e-525e446ef153' -H 'Content-Length : 0'

Если я вызываю тот же запрос без передачи заголовка Param Content-Length, я получаюОшибка HTTP 411, требуется длина.

Это мой код в Java:

URL url = new URL("http://serverurl.com/method/6eb276a2-5c79-4f6e-a4b5-a26b0e6848c7/action");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.addRequestProperty("Content-Type", "application/json");
con.addRequestProperty("Token", "cba5f12c-af55-480f-970e-525e446ef153");
con.connect();

Этот запрос получает ответ HTTP-кода 411.Итак, я попытался добавить:

con.addRequestProperty("Content-Length", "0");

Но это не работает, поэтому я изменил на:

URL url = new URL("http://serverurl.com/method/6eb276a2-5c79-4f6e-a4b5-a26b0e6848c7/action");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.addRequestProperty("Content-Type", "application/json");
con.addRequestProperty("Token", "cba5f12c-af55-480f-970e-525e446ef153");
con.setDoOutput(true);
con.getOutputStream().close();
con.setFixedLengthStreamingMode(0);
con.connect();

Но теперь я получаю 400 HTTP-код.

Как выполнить запрос PUT с пустым телом и установить длину содержимого в соответствии с вызовом cURL?

...