基本使用方法
-
用一个url的字符串创建一个URL
URL(String url)
-
用URL打开HttpURLConnection
URL#openConnection()
-
配置传输,请求方式,请求头等等
a.配置传输connection.setDoOutput(true); connection.setDoInput(true);
b.配置请求方式
connection.setRequestMethod("POST");
c.配置请求头
connection.setRequestProperty("Content-Type", "application/json");
-
建立传输
a.得到向服务器输出的流connection.getOutputStream()
这里面比较无法理解的是,调用这个方法时,会调用
connection.connect()
来完成http请求的三次握手,这尼玛严重违背设计模式的六大设计原则之一的单一职责啊。 但是我们不能钻牛角尖,我们可以这样理解,我们既然要得到向服务器传送数据的流时就说明我们要发送数据了,那么,http三次握手必然要走完,服务端已经和客户端建立好TCP长连接来等待数据的到来,这个时候,如果url无效,在http三次握手的时候就会抛java.net.ConnectException
b.得到服务器返回的流
connection.getInputStream()
这里跟上面一样,也是比较懵逼,这句代码除了获取服务器返回的数据流,还做了一件事,那就是提交http请求报文,其实我们可以这么理解,既然客户端要得到服务器数据返回的流,那肯定是要等待服务器的响应了,要想让服务器有响应,那肯定得让客户端提交请求报文!
网友评论