2017-02-05 15 views
1

私は本体なしでPOSTリクエストをいくつかのRESTサービスURLにしようとしています。本体なしの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> 

(POSTMANと同じリンクにPOSTを送信するには働いていた)

+2

"RESTサービスURLに身体のないPOSTリクエストをしようとしています"。どうして? – 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")+ 

上記のコードで独自のパラメータと値を設定し、この行を文字列の長さに使用します。

私は同じ問題があり、これだけ解決したので、これはあなたのために働くでしょう。

関連する問題