setDoOutput()
中有URLConnection
。根据{{3}}我应该
如果您打算将URL连接用于输出,请将DoOutput标志设置为true,否则设置为false。
现在我面临documentation - 一旦调用POST
,Java运行时将请求转换为setDoOutput(true)
,服务器仅响应GET
个请求。我想了解如果从代码中删除setDoOutput(true)
会发生什么。
这到底会产生什么影响?假设我把它设置为false
- 我现在能做什么,现在不能做什么?我能够执行GET
次请求吗?在这种方法的背景下什么是“输出”?
答案 0 :(得分:84)
如果要发送(输出)请求正文,例如使用POST或PUT请求,则需要将其设置为true。使用GET,您通常不会发送身体,因此您不需要它。
发送请求正文本身是通过连接的输出流完成的:
conn.getOutputStream().write(someBytes);
答案 1 :(得分:24)
setDoOutput(true)
用于POST
和PUT
次请求。如果是false
,则表示使用GET
次请求。
答案 2 :(得分:1)
添加评论,如果您有持久的连接并发送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
答案 3 :(得分:0)
public void setDoOutput( boolean dooutput )
它将一个值作为参数,并将此URLConnection的doOutput
字段的值设置为指定值。
URL连接可用于输入和/或输出。如果您打算将URL连接用于输出,请将DoOutput标志设置为true,否则设置为false。默认值为false。