HttpURLConnection的connect()方法作用

zy_116494718 2010-10-19 05:24:11
如题,我用下面的代码可以实现往服务器端传递数据,

URL url = new URL("http://localhost:8088/Test/streamtestserver.do");
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/stream");
con.setDoOutput(true);
con.setDoInput(true);
con.setUseCaches(false);
con.setInstanceFollowRedirects(true);
con.connect();
DataOutputStream d = new DataOutputStream(con.getOutputStream());
d.write("111".getBytes());
d.flush();
d.close();

但是我把con.connect();注掉后仍可以实现,所以不知道con.connect();的用处和在,是不是只要
url.openConnection();后就已经建立连接了?
还有一个问题就是我把d.flush()和d.close()方法去掉后仍可以向服务器端输出数据,那d.flush()的用处是什么?


...全文
4281 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我在做断点下载,我下了几次都好的,课突然间con.connect();这句报错了。我就无语了我是来求教的。
zy_116494718 2010-10-20
  • 打赏
  • 举报
回复

我知道对文件操作时如果不调用close()或不调用flush()的话是无法将数据输入到文件中的,但我这里往服务器发送数据却不用调用,我想知道为什么?
zy_116494718 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 closewbq 的回复:]
API:

Java code

connect
public abstract void connect()
throws IOException打开到此 URL 引用的资源的通信链接(如果尚未建立这样的连接)。
如果在已打开连接(此时 connected 字段的值为 true)的情况下调用 connect 方法,则忽略该调用。

……
[/Quote]

是不是url.openConnection();后就已经建立连接了?
zy_116494718 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xuyisen_1987 的回复:]
d.flush();//强制把缓冲区的数据写入到文件并清空缓冲区
d.close();//关闭连接

其实调用close()之前也会强制把缓冲区的数据写入到文件并清空缓冲区,所以一般写一个close就行了,没必要2个都写.
close()就是关闭连接,如果不用了就关掉,否则会占用系统资源.
[/Quote]

是不是不用flush()就可以把数据传到输出流输出?数据都会先进缓冲区再进输出流么?
xuyisen_1987 2010-10-20
  • 打赏
  • 举报
回复
d.flush();//强制把缓冲区的数据写入到文件并清空缓冲区
d.close();//关闭连接

其实调用close()之前也会强制把缓冲区的数据写入到文件并清空缓冲区,所以一般写一个close就行了,没必要2个都写.
close()就是关闭连接,如果不用了就关掉,否则会占用系统资源.

closewbq 2010-10-20
  • 打赏
  • 举报
回复
API:

connect
public abstract void connect()
throws IOException打开到此 URL 引用的资源的通信链接(如果尚未建立这样的连接)。
如果在已打开连接(此时 connected 字段的值为 true)的情况下调用 connect 方法,则忽略该调用。

URLConnection 对象经历两个阶段:首先创建对象,然后建立连接。在创建对象之后,建立连接之前,可指定各种选项(例如,doInput 和 UseCaches)。连接后再进行设置就会发生错误。连接后才能进行的操作(例如 getContentLength),如有必要,将隐式执行连接。


抛出:
SocketTimeoutException - 如果在建立连接之前超时期满
IOException - 如果打开连接时发生 I/O 错误。
另请参见:
connected, getConnectTimeout(), setConnectTimeout(int)
zy_116494718 2010-10-20
  • 打赏
  • 举报
回复
没人回复,自己顶下~

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧