2017-02-05 4 views
1

Я пытаюсь отправить запрос POST без тела на какой-либо URL-адрес службы REST.POST без тела

HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection(); 
con.setRequestMethod("POST"); 
con.setRequestProperty("Content-Length", "0"); //tried with/without 
con.setDoOutput(true); //tried with/without 
con.connect(); 

Отклик:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd"> 
<HTML> 
    <HEAD> 
     <TITLE>Length Required</TITLE> 
     <META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"> 
    </HEAD> 
    <BODY> 
     <h2>Length Required</h2> 
     <hr> 
     <p>HTTP Error 411. The request must be chunked or have a content length.</p> 
    </BODY> 
</HTML> 

(отправка POST по той же ссылке с POSTMAN работал)

+2

«Я пытаюсь отправить запрос POST без тела на какой-либо URL-адрес службы REST». Зачем? – Juggernaut

+0

Это требование службы REST – yuris

+0

Вы пытались 'setDoOutput (true)', в сочетании с 'getOutputStream(). Close()', на самом деле ничего не писать? Вы попробовали 'setFixedLengthStreamingMode (0)'? Или, может быть, оба? – Andreas

ответ

0

Я думаю, что ваш URL имеют некоторые параметры, которые будут добавлены в URL после '?' символ. Поэтому, когда вы используете параметры, вам нужно объявить длину.

Здесь вы можете добавить параметры и длина.

String urlParameters = 
       "User=" + URLEncoder.encode("bhavik", "UTF-8") + 
         "&passwd=" + URLEncoder.encode("1234", "UTF-8")+ 

Задайте свои собственные параметры и значение в приведенном выше коде, а затем используйте эту строку для получения длины строки.

conn.setRequestProperty("Content-Length", ""+Integer.toString(urlParameters.getBytes().length)); 

Это будет работать для вас, потому что у меня была такая же проблема, и я разрешил ее как это.

Смежные вопросы