php 转 java 中。。
网上一大片不知道谁 copy 谁的文章,说 getResponseCode()
,getInputStream()
,getOutputStream()
会隐式调用 connect()
,所以不用写 connect()
。
既然不用写,那HttpURLConnection.connect()
这个方法存在的意义是什么?
找了半天,在 stackoverflow 上找到一个和我一样好奇心重的人。
结果只得到了 2 个文不答题的回答。
求大佬指点!!
1
fkdog 2020-01-08 12:30:37 +08:00
又不是所有的 http 请求一定要去往流里读写。
假设你遇到一个场景,只需要调用一下 http 接口,不需要关心结果返回,那你不去调 connect 你怎么连接? |
3
fkdog 2020-01-08 14:31:53 +08:00
@zsdroid
看了下源码,好像的确只是建了链接。 HttpUrlConnection 是 UrlConnection 的扩展类,这个接口是把 connect 标注成了 public。 意味着你可以自行扩展其他 UrlConnection, 如果是 HttpKeepAliveUrlConnection 和 Http2UrlConnection 类似这类多个请求复用链接的,想自己搞一个链接池,connect 单独调用就有必要了。 另外 UrlConnection 有一个 FtpUrlConnection,这个 connect()方法就是需要单独调用,因为一些 ftp 服务器需要登录,都是在这个 connect 方法里完成的。 单纯从你的 case 里看,connect()单独调用并没有什么作用,存粹是为了扩展 UrlConnection 这个接口。 |