什么是URLConnection.setDoOutput()影响?

URLConnectionsetDoOutput() 。 根据我应该的文件

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

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

这会影响到什么? 假设我把它设置为false – 我现在能做什么,现在我不能做什么? 我能否执行GET请求? 什么是这种方法的“输出”?

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

发送请求主体本身是通过连接的输出stream完成的:

 conn.getOutputStream().write(someBytes); 

setDoOutput(true)用于POSTPUT请求。 如果它是false那么它是使用GET请求。

添加评论,如果你有一个持久的连接,并发送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"); } 

为避免连接过长,请每次closures。

 if (doClose) // some boolean con.setRequestProperty("Connection", "close"); con.connect(); // force connect request 
 public void setDoOutput( boolean dooutput ) 

它将一个值作为参数,并将此URLConnection的doOutput字段的此值设置为指定的值。

URL连接可用于input和/或输出。 如果打算使用URL连接输出,请将DoOutput标志设置为true,否则设为false。 默认值是false。