2011-04-07 60 views

回答

17

從文檔URLConnection

設置doInput標誌爲true,如果你打算使用輸入的URL連接,如果不是假的。默認值是true。

,如果你打算使用輸出的URL連接,如果不是假的設置doOutput標誌爲true。默認值是false。

至於實際目的,Oracle代碼中的任何內容都不會在doInput變量上進行檢查。然而,doOutput默認爲false將阻止您調用HTTP POST請求所需的getOutputStream()。所以這是一種提前表明您希望寫入OutputStream而不實際建立它的方法。

+1

是的我閱讀了文檔。只是不明白「打算使用URL連接輸入時,如果不是真,假」。這是什麼意思? – 2011-04-07 14:57:35

+0

我剛剛從我所知道的答案中多加了一點。 – WhiteFang34 2011-04-07 15:00:48

+4

setDoInput(false)在響應主體將被忽略時調用。 Java核心代碼確實調用了JAXB和XML序列化爲URL。請參閱:com/sun/org/apache/xml/internal/serialize/DOMSerializerImpl.java和javax \ xml \ bind \ JAXB.java – 2011-04-07 17:14:12

9

我仍然感到困惑,究竟是由「用來輸入URL連接」文檔中的意思。

這可能意味着你想從響應或要輸入的信息放入其請求讀取信息。 該文檔指出:

URL連接可用於輸入和/或輸出。將doInput標誌設置爲true 表示應用程序打算從URL連接讀取數據。

此字段的默認值爲true。

所以,如果你想忽略從響應數據,那麼你可以設置到則將DoInput假。 如果你想使用getInputStream(),那麼你應該保持獨立或將其設置爲true。

一個URL連接可用於輸入和/或輸出。將doOutput標誌設置爲true 表示應用程序打算將數據寫入URL連接。

此字段的默認值爲false。

所以,如果你想追加數據的請求(調用getOutputStream()),那麼你必須設置doOutput爲true。

0

的方法是由超,URLConnection聲明。我認爲其目的是在具體實施中實現潛在的優化。記住URLConnection是協議不可知的(但是HttpURLConnection顯然不是)。

+0

'protocol agnostic'?你什麼意思? – 2016-04-19 00:48:39

+1

@YoushaAleayoub不受限於任何特定的協議,如HTTP或FTP。 – haraldK 2016-04-19 05:06:33