Java HttpURLConnection中的setDoInput和setDoOutput

HttpURLConnection.setDoInputHttpURLConnection.setDoOutput的function或用途是什么?

URLConnection的文档:

如果您打算使用URL连接进行输入,请将DoInput标志设置为true,否则设置为false。 默认值为true。

如果您打算将URL连接用于输出,请将DoOutput标志设置为true,否则设置为false。 默认值为false。

至于实际目的,Oracle代码中的任何内容似乎都没有检查doInput变量。 但是, doOutput默认值为false将阻止您调用HTTP POST请求所需的getOutputStream() 。 因此,这是一种提前指示您希望在不实际建立它的情况下写入OutputStream

我仍然对“使用url连接输入”文档中的确切含义感到困惑。

这可能意味着您希望从响应中读取信息,或者您希望将信息输入其请求中。 文件说明:

URL连接可用于输入和/或输出。 将doInput标志设置为true表示应用程序打算从URL连接中读取数据。

此字段的默认值为true。

因此,如果要忽略响应中的数据,则可以将doInput设置为false。 如果你想使用getInputStream(),那么你应该保留它或将其设置为true。

URL连接可用于输入和/或输出。 将doOutput标志设置为true表示应用程序打算将数据写入URL连接。

该字段的默认值为false。

因此,如果要将数据附加到请求(调用getOutputStream()),则必须将doOutput设置为true。

这些方法由超类URLConnection声明。 我认为其目的是在具体实现中实现潜在的优化。 请记住, URLConnection与协议无关(但显然不是HttpURLConnection )。