URLConnection.setDoOutput()究竟是什么影响的?

时间:2011-12-21 09:53:32

标签: java android urlconnection

setDoOutput()中有URLConnection。根据{{​​3}}我应该

  

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

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

这到底会产生什么影响?假设我把它设置为false - 我现在能做什么,现在不能做什么?我能够执行GET次请求吗?在这种方法的背景下什么是“输出”?

4 个答案:

答案 0 :(得分:84)

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

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

conn.getOutputStream().write(someBytes);

答案 1 :(得分:24)

setDoOutput(true)用于POSTPUT次请求。如果是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。