URLConnection
にはsetDoOutput()
があります。 ドキュメント に従ってください
出力にURL接続を使用する場合はDoOutputフラグをtrueに設定し、そうでない場合はfalseに設定します。
今私は直面している 正確にこの問題 -JavaランタイムはsetDoOutput(true)
が呼び出されたときにリクエストをPOST
に変換し、サーバーはGET
リクエストにのみ応答します。コードからsetDoOutput(true)
を削除するとどうなるかを理解したいと思います。
これは正確に何に影響しますか? false
に設定したとします-今何ができるのか、今は何ができないのですか? GET
リクエストを実行できますか?このメソッドのコンテキストでの「出力」とは何ですか?
たとえば、POSTまたはPUTリクエストを使用して)リクエスト本文を送信(output)する場合は、trueに設定する必要があります。GETでは、通常、体を送るので、あなたはそれを必要としません。
リクエスト本体自体の送信は、接続の出力ストリームを介して行われます。
conn.getOutputStream().write(someBytes);
setDoOutput(true)
は、POST
およびPUT
要求に使用されます。 false
の場合、GET
要求を使用するためのものです。
接続を長く維持し、GETとPOSTの両方を送信する場合、コメントを追加します。
if (doGet) { // some boolean
con.setDoOutput(false); // reset any previous setting, if con is long lasting
con.setRequestMethod("GET");
}
else {
con.setDoOutput(true); // reset any previous setting, if con is long lasting
con.setRequestMethod("POST");
}
また、接続が長続きしないように、毎回接続を閉じます。
if (doClose) // some boolean
con.setRequestProperty("Connection", "close");
con.connect(); // force connect request
public void setDoOutput( boolean dooutput )
パラメータとして値を取り、このURLConnectionのdoOutput
フィールドのこの値を指定された値に設定します。
URL接続は、入力および/または出力に使用できます。出力にURL接続を使用する場合はDoOutputフラグをtrueに設定し、そうでない場合はfalseに設定します。デフォルトはfalseです。