Подтвердить что ты не робот

Java HttpURLConnection

Какова функция или назначение HttpURLConnection.setDoInput или HttpURLConnection.setDoOutput?

4b9b3361

Ответ 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, очевидно, нет).