Co dokładnie robi URLConnection.setdooutput () wpływa?
Jest setDoOutput()
W URLConnection
. Zgodnie z dokumentacją powinienem
Ustaw flagę DoOutput na true, jeśli chcesz użyć połączenia URL do wyjścia, false, jeśli nie.
Teraz mam do czynienia z dokładnie z tym problemem - Java runtime konwertuje żądanie na POST
po wywołaniu setDoOutput(true)
, a serwer odpowiada tylko na GET
żądania. Chcę zrozumieć, co się stanie, jeśli usunę to setDoOutput(true)
z kodu.
Na co dokładnie to wpłynie? Załóżmy, że ustawiłem go na false
- co mogę teraz zrobić, a czego nie mogę teraz zrobić? Czy będę mógł wykonywać GET
żądania? Co to jest "output" w kontekście tej metody?
4 answers
Musisz ustawić ją na true, jeśli chcesz wysłać (output) ciało żądania, na przykład z żądaniami POST lub PUT. Z GET zazwyczaj nie wysyłasz ciała, więc go nie potrzebujesz.
Wysłanie samego ciała żądania odbywa się poprzez strumień wyjściowy połączenia:
conn.getOutputStream().write(someBytes);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-21 09:59:53
setDoOutput(true)
jest używany dla żądań POST
i PUT
. Jeśli jest to false
, to służy do używania żądań GET
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-21 10:01:07
Dodawanie komentarza, jeśli masz długotrwałe połączenie i wysyłasz zarówno Gety, jak i posty, to właśnie robię:
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");
}
I aby uniknąć długotrwałego połączenia, zamknij je za każdym razem.
if (doClose) // some boolean
con.setRequestProperty("Connection", "close");
con.connect(); // force connect request
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-10 15:44:18
public void setDoOutput( boolean dooutput )
Pobiera wartość jako parametr i ustawia tę wartość pola doOutput
dla tego URLConnection na określoną wartość.
Połączenie URL może być użyte do wejścia i / lub wyjścia. Ustaw flagę DoOutput na true, jeśli chcesz użyć połączenia URL do wyjścia, false, jeśli nie. Wartość domyślna to false.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-21 09:56:52