分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

对URL,URLConection的源码的分析

发布时间:2023-09-06 01:25责任编辑:顾先生关键词:暂无标签

客户端链接网络获取数据一般使用URL类

URL ulr = new URL(" ");

URLConnection connection = url.openConnection();-------------该方法返回的是一个URLConnection对象

 connection.getInputStream()--------------------链接网络并获取数据

具体是怎么链接到网络服务器的呢

下面进入openConnection()方法中

从源码知道,这个方法教给了URLStreamHandler handler;处理 器去实现

下一步点击进入handler.openConnetion()发现该方法是一个抽象方法,具体实现交给了子类

我们在idea中查看该处理器的结构

下一步是找handler.openConnetion()方法的具体实现,我们点进

发现最终调用实现的是new HttpURLConnection();这个新建对象返回URLConnection.....那么我们可以想是否在这个对象进行初始化的时候就进行一些类似Socket的链接呢,

我们不着急,我们先看URLConnection这个类

我们在idea在URLConnection这个类名字按快捷键ctrl + h查看类的结构

如图

URLConnection是一个抽象父类,我们发现刚才调用new HttpURLConnection()的方法中的所属于的类是这个的子类,那么我顺势进入HttpURLConnection这个类的构造方法好了

用过查看源码并没有发现类似soket的链接

但是我们还有connection.getInputstream()方法还没有看

该方法在抽象父类的默认实现是抛出异常的,那么我们直接看子类对该方法的覆盖就可以了

下面是HttpConnection的getInputstream()的实现

我们可以看到最终调用的是getInputStream0()方法

其中我们只要关注的就是this.connect()方法就可以了,其余的可以省略....

嗯..又在调用其他方法..那我们继续点进去就可以了

 在plainConnect0()的源码

我们可以不用关注这些,我们可以看到最终有用的下面这个

调用this.getNewHttpClient()方法...

然后在HttpClient.New() 方法中最重要的也就是

new HttlClient();

因为这个方法中做了我们一直想看的事情!!!

看到最后面的openServer()!!!!!重点来了

然后就是把重点放在doConnect()方法

来了,划重点!!!!!!

 没错就这样链接上了.................................严谨

第一次写分析源码,思路不是很清晰,请见谅,有错大家可以指出来交流交流,谢谢大家

对URL,URLConection的源码的分析

原文地址:http://www.cnblogs.com/wugaga/p/7850708.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved