Java URLConnection.setDoOutput()具体影响什么?

Java URLConnection.setDoOutput()具体影响什么?,java,android,urlconnection,Java,Android,Urlconnection,在URLConnection中有setDoOutput()。据我所知,我应该 如果要使用URL连接进行输出,请将DoOutput标志设置为true,否则设置为false 现在我要面对的是,Java运行时一旦调用setDoOutput(true),服务器只响应GET请求,就会将请求转换为POST。我想了解如果我从代码中删除setDoOutput(true)会发生什么 这到底会影响什么?假设我将其设置为false-我现在可以做什么,现在不能做什么?我是否能够执行GET请求?此方法上下文中的“输出”是

URLConnection
中有
setDoOutput()
。据我所知,我应该

如果要使用URL连接进行输出,请将DoOutput标志设置为true,否则设置为false

现在我要面对的是,Java运行时一旦调用
setDoOutput(true)
,服务器只响应
GET
请求,就会将请求转换为
POST
。我想了解如果我从代码中删除
setDoOutput(true)
会发生什么

这到底会影响什么?假设我将其设置为
false
-我现在可以做什么,现在不能做什么?我是否能够执行
GET
请求?此方法上下文中的“输出”是什么?

setDoOutput(true)
用于
POST
PUT
请求。如果为
false
,则用于使用
GET
请求

public void setDoOutput( boolean dooutput )
它接受一个值作为参数,并将此URLConnection的
doOutput
字段的该值设置为指定值


URL连接可用于输入和/或输出。如果要使用URL连接进行输出,请将DoOutput标志设置为true,否则设置为false。默认值为false

如果要发送(输出)请求正文,例如POST或PUT请求,则需要将其设置为true。使用GET,您通常不发送身体,因此您不需要它

通过连接的输出流发送请求正文本身:

conn.getOutputStream().write(someBytes);

添加一条评论,如果你有一个长期的联系,并且你同时发送GET和POST,我会这样做:

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");
}
为了避免连接持续时间过长,请每次关闭连接

if (doClose)    // some boolean
    con.setRequestProperty("Connection", "close");

con.connect();              // force connect request

在询问之前,我已经阅读了文档中的内容。我问的原因是我不明白这些的含义。如果你想写一个连接对象,你必须设置serDoOutput trueok,那么我如何强制这个连接执行PUT,因为另一端的服务器只接受PUT请求,而不接受POST?如果我正在下载一个图像怎么办?为什么它被命名为
setDoOutput
?不是一个很直观的名字如果我正在下载图像呢?下载?还是上传?