美文网首页
老司机对HttpURLConnection的理解

老司机对HttpURLConnection的理解

作者: HVCKER | 来源:发表于2016-09-23 17:12 被阅读38次

    基本使用方法

    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请求报文,其实我们可以这么理解,既然客户端要得到服务器数据返回的流,那肯定是要等待服务器的响应了,要想让服务器有响应,那肯定得让客户端提交请求报文!

    相关文章

      网友评论

          本文标题:老司机对HttpURLConnection的理解

          本文链接:https://www.haomeiwen.com/subject/gxgtyttx.html