Какова функция или назначение HttpURLConnection.setDoInput
или HttpURLConnection.setDoOutput
?
Java HttpURLConnection
Ответ 1
Из документации для URLConnection
:
Установите флаг DoInput в значение true, если вы собираетесь использовать URL-соединение для ввода, false, если нет. Значение по умолчанию - true.
Установите флаг DoOutput в значение true, если вы собираетесь использовать URL-соединение для вывода, false, если нет. Значение по умолчанию - false.
Что касается фактической цели, то не кажется, что что-либо в коде Oracle проверяет переменную doInput
. Однако значение doOutput
по умолчанию false приведет к тому, что вы не вызовете getOutputStream()
, который необходим для запросов HTTP POST. Таким образом, это способ указать заранее, что вы планируете писать в OutputStream
, не устанавливая его.
Ответ 2
Я все еще был замешан в том, что именно подразумевалось в документации с помощью "Использовать соединение с URL для ввода".
Это может означать, что вы хотите прочитать информацию из ответа или хотите ввести информацию в свой запрос. В документации указано:
URL-соединение может использоваться для ввода и/или вывода. Установка значка doInput в true указывает, что приложение намерено читать данные из URL-соединения.
Значение по умолчанию этого поля равно true.
Итак, если вы хотите игнорировать данные из ответа, вы можете установить doInput в false. Если вы хотите использовать getInputStream(), вы должны оставить это в покое или установить его в true.
URL-соединение может использоваться для ввода и/или вывода. Установка значка doOutput в значение true указывает, что приложение намерено записывать данные в URL-соединение.
Значение по умолчанию этого поля равно false.
Итак, если вы хотите добавить данные к запросу (вызывая getOutputStream()), вы должны установить doOutput в true.
Ответ 3
Методы объявляются суперклассом URLConnection
. Я думаю, что намерение состояло в том, чтобы обеспечить потенциальную оптимизацию в конкретных реализациях. Помните, что URLConnection
является агностиком протокола (но HttpURLConnection
, очевидно, нет).