老司机对HttpURLConnection的理解

基本使用方法

  1. 用一个url的字符串创建一个URL
    URL(String url)

  2. 用URL打开HttpURLConnection
    URL#openConnection()

  3. 配置传输,请求方式,请求头等等
    a.配置传输

     connection.setDoOutput(true);
     connection.setDoInput(true);
    

    b.配置请求方式

     connection.setRequestMethod("POST");
    

    c.配置请求头

     connection.setRequestProperty("Content-Type", "application/json");
    
  4. 建立传输
    a.得到向服务器输出的流

     connection.getOutputStream()
    

    这里面比较无法理解的是,调用这个方法时,会调用connection.connect()来完成http请求的三次握手,这尼玛严重违背设计模式的六大设计原则之一的单一职责啊。 但是我们不能钻牛角尖,我们可以这样理解,我们既然要得到向服务器传送数据的流时就说明我们要发送数据了,那么,http三次握手必然要走完,服务端已经和客户端建立好TCP长连接来等待数据的到来,这个时候,如果url无效,在http三次握手的时候就会抛java.net.ConnectException

    b.得到服务器返回的流

     connection.getInputStream()
    

    这里跟上面一样,也是比较懵逼,这句代码除了获取服务器返回的数据流,还做了一件事,那就是提交http请求报文,其实我们可以这么理解,既然客户端要得到服务器数据返回的流,那肯定是要等待服务器的响应了,要想让服务器有响应,那肯定得让客户端提交请求报文!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容