CN116346775A - Andriod***中网络请求的方法及装置、电子设备 - Google Patents
Andriod***中网络请求的方法及装置、电子设备 Download PDFInfo
- Publication number
- CN116346775A CN116346775A CN202310134576.6A CN202310134576A CN116346775A CN 116346775 A CN116346775 A CN 116346775A CN 202310134576 A CN202310134576 A CN 202310134576A CN 116346775 A CN116346775 A CN 116346775A
- Authority
- CN
- China
- Prior art keywords
- target
- domain name
- address
- network request
- cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 111
- 230000001960 triggered effect Effects 0.000 claims abstract description 12
- 230000000977 initiatory effect Effects 0.000 claims abstract description 5
- 238000004590 computer program Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 abstract description 20
- 238000004891 communication Methods 0.000 abstract description 14
- 230000007246 mechanism Effects 0.000 description 6
- 238000011161 development Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5007—Internet protocol [IP] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/562—Brokering proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种Andriod***中网络请求的方法及装置、电子设备。该方法包括:对InetAddress类的成员变量impl添加动态代理;响应于目标应用触发对目标域名的网络请求,基于成员变量impl的动态代理,在目标应用的缓存中查找目标域名对应的第一目标IP地址;在未查找到目标域名对应的第一目标IP地址的情况下,通过域名***DNS服务器转发网络请求获取到目标域名对应的第二目标IP地址,以对第二目标IP地址发起网络请求;对应目标域名将第二目标IP地址存储至目标应用的缓存中。本发明实施例在发起网络请求的过程中,将IP地址的查找转移到了应用层,从而在应用层查询到IP地址的情况下,可以减少DNS请求的次数和跨进程通信的次数,进而提升网络请求的速度。
Description
技术领域
本发明涉及数据通信技术领域,尤其涉及一种Andriod***中网络请求的方法及装置、电子设备。
背景技术
网络请求通常可以理解为由客户端触发的,通过互联网获取服务端数据的请求。因此,网络请求通常包含服务端的IP(网际互联协议,Internet Protocol)地址。
目前,IP地址的形式是一串难以记忆的数字,其使用起来并不方便。因此,大部分网络请求采用形式更加简单的域名代替IP地址,然后增加一个转换的流程,即利用DNS(域名***,Domain Name System)服务器将域名转换为IP地址。这样,用户可以无需关心服务端的IP地址。
然而,上述利用DNS进行转换的方式无疑会延缓网络请求的速度,从而增长用户等待的时间。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的Andriod***中网络请求的方法及装置、电子设备。
第一方面,本发明实施例提供了一种Andriod***中网络请求的方法,所述方法包括:
对InetAddress类的成员变量impl添加动态代理;
响应于目标应用触发对目标域名的网络请求,基于所述成员变量impl的动态代理,在所述目标应用的缓存中查找所述目标域名对应的第一目标IP地址;
在未查找到所述目标域名对应的第一目标IP地址的情况下,通过DNS服务器转发所述网络请求获取到所述目标域名对应的第二目标IP地址,以对所述第二目标IP地址发起所述网络请求;
对应所述目标域名将所述第二目标IP地址存储至所述目标应用的缓存中。
可选地,在所述目标应用的缓存中查找所述目标域名对应的第一目标IP地址之后,所述方法还包括:
在查找到所述目标域名对应的第一目标IP地址的情况下,通过缓存获取所述目标域名对应的第一目标IP地址,以对所述第一目标IP地址发起所述网络请求。
可选地,在所述目标应用的缓存中查找所述目标域名对应的第一目标IP地址,包括:
在所述目标应用的缓存中查找域名数组,其中,所述域名数组中存储有多个不同的域名以及各域名对应的IP地址;
在所述域名数组中查找所述目标域名对应的IP地址。
可选地,所述对InetAddress类的成员变量impl添加动态代理,包括:
通过在Application的attachBaseContext()方法或者onCreate()方法中调用编写有动态代理逻辑的自定义方法,对InetAddress类的成员变量impl添加动态代理。
第二方面,本发明实施例还提供一种Andriod***中网络请求的装置,所述装置包括:
代理模块,用于对InetAddress类的成员变量impl添加动态代理;
查询模块,用于响应于目标应用触发对目标域名的网络请求,基于所述成员变量impl的动态代理,在所述目标应用的缓存中查找所述目标域名对应的第一目标IP地址;
第一发起模块,用于在未查找到所述目标域名对应的第一目标IP地址的情况下,通过DNS服务器转发所述网络请求获取到所述目标域名对应的第二目标IP地址,以对所述第二目标IP地址发起所述网络请求;
存储模块,用于对应所述目标域名将所述第二目标IP地址存储至所述目标应用的缓存中。
可选地,所述装置还包括:
第二发起模块,用于在查找到所述目标域名对应的第一目标IP地址的情况下,通过缓存获取所述目标域名对应的第一目标IP地址,以对所述第一目标IP地址发起所述网络请求。
可选地,所述查询模块,包括:
第一查询单元,用于在所述目标应用的缓存中查找域名数组,其中,所述域名数组中存储有多个不同的域名以及各域名对应的IP地址;
第二查询单元,用于在所述域名数组中查找所述目标域名对应的IP地址。
可选地,所述代理模块具体用于:通过在Application的attachBaseContext()方法或者onCreate()方法中调用编写有动态代理逻辑的自定义方法,对InetAddress类的成员变量impl添加动态代理。
第三方面,本发明实施例还提供一种电子设备,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的Andriod***中网络请求的方法中的步骤。
第四方面,本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的Andriod***中网络请求的方法中的步骤。
在本发明实施例中,通过对InetAddress类的成员变量impl添加动态代理,可以改变原有的IP地址查找方式。在目标应用触发网络请求的情况下,基于被动态代理的成员变量impl,首先从目标应用的缓存中查找相应的IP地址。并在未找到相应的IP地址时,借助DNS服务器进行兜底查询。最终在向查询到的IP地址发起网络请求之后,会对应目标域名将查询到的IP地址存储至目标应用的缓存中,从而使得后续触发对目标域名的网络请求时,可以直接从目标应用的缓存中查询到目标域名对应的IP地址。本发明在Andriod***中网络请求的过程中,将IP地址的查询转移到了应用层,这样,在应用层查询到IP地址的情况下,无需跨进程使用DNS服务器,减少了DNS请求的次数和跨进程通信的次数,提升了网络请求的速度,缩短了用户等待的时间。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种Andriod***中网络请求的方法的步骤流程图;
图2为本发明实施例提供的一种Andriod***中网络请求的装置的结构框图;
图3为本发明实施例提供的电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本发明的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
参见图1,本发明实施例提供了一种Andriod***中网络请求的方法,该方法可以包括:
步骤101:对InetAddress类的成员变量impl添加动态代理。
本步骤中,可以基于Java反射机制实现动态代理的添加。其中,Java反射机制是在程序处于运行状态时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,这里不再详述。本发明实施例应用于安装有安卓操作***的电子设备。该电子设备可以为手机、笔记本电脑、台式机电脑、平板电脑等,这里不做限定。应当说明的是,应用本发明实施例提供的方法的电子设备支持反射机制。例如该电子设备可以为安装有目标版本的安卓操作***的手机,该目标版本为允许反射机制的安卓版本。当然,目标版本也可以为不允许反射机制,但通过依赖库可以实现反射机制的安卓版本。
可以理解的是,InetAddress类为Java中IP地址的接口类,由于IP协议包括Internet Protocol version 4(IPv4)和Internet Protocol version 6(IPv6)两个版本。因此InetAddress类包含有两个子类,即class Inet6Address、class Inet4Address。针对每一子类,设置有一相应的实现类。即针对class Inet6Address,设置的实现类为Inet6AddressImpl类。针对class Inet4Address类,设置的实现类为Inet4AddressImpl类。实现类中对基于域名查询IP地址的方法进行了具体实现,其中,查询IP地址的方法为利用DNS服务器查询域名对应的IP地址。InetAddress类中的成员变量impl在未被动态代理之前,指向的实现类为Inet6AddressImpl类或者Inet4AddressImpl类。因此,每次利用成员变量impl查询IP地址时,都会借助DNS服务器查询域名对应的IP地址。在成员变量impl被动态代理之后,查询IP地址的方法将会变为自定义的查询方法,从而实现了IP地址查询方法的改变。其中,动态代理InetAddress类的成员变量impl,即为对成员变量impl添加动态代理。
步骤102:响应于目标应用触发对目标域名的网络请求,基于成员变量impl的动态代理,在目标应用的缓存中查找目标域名对应的第一目标IP地址。
本步骤中,目标应用为安装于电子设备上的任一由Java编程语言开发的应用程序,例如其可以为浏览器,购物类应用程序、社交类应用程序等。可以理解的是,目标应用触发网络请求之后,将网络请求发送至作为数据提供方的后台服务器,以获取相关数据,并将获取的数据加载至目标应用的当前显示页面,最终展示给用户。这里,并不限定目标应用触发的哪种网络请求。例如,目标应用为一浏览器,用户点击浏览器中的某一控件之后,将跳转至目标页面,并触发生成一网络请求,用以请求目标页面的页面数据。在将网络请求发送至浏览器的后台服务器之后,可以获得浏览器后台返回的页面数据,进而将获得的页面数据加载至目标页面,展示给用户。
应当说明的是,网络请求包含有一域名,该域名与作为数据提供方的后台服务器的IP地址相对应。因此,通过网络请求中的域名可以确定作为数据提供方的后台服务器的IP地址。这里,利用目标应用的缓存存储多个域名以及各域名对应的IP地址。在运行目标应用的过程中,由于是从目标应用的缓存中查找IP地址,因此无需跨进程通信。目标应用的缓存可以理解为目标应用所属进程中的,与目标应用相关联的存储位置。也就是说,目标应用所属进程无需跨进程就可以访问到目标应用的缓存。值得注意的是,域名与IP地址之间的对应关系,可以为在注册域名过程中确定的域名与IP地址的对应关系。也可以为,基于目标应用的开发需求自行确定的对应关系。这里,在目标应用的缓存中查找目标域名对应的第一目标IP地址的执行逻辑,为被动态代理之后的成员变量impl的执行逻辑。因此,在动态代理成员变量impl之后,在查询域名对应的IP地址时,将首先从目标应用的缓存中进行查询。
步骤103:在未查找到目标域名对应的第一目标IP地址的情况下,通过DNS服务器转发网络请求获取到目标域名对应的第二目标IP地址,以对第二目标IP地址发起网络请求。
本中步骤中,由于当前投入使用的域名和IP地址的数量十分巨大,并且也在不断的增多。目标应用的缓存中可以仅存储一些使用频率较高的域名及其对应的IP地址。从而可以避免目标应用过大的问题。这样的话,可能会出现无法查找到第一目标IP地址的情况。即由于目标应用的缓存中没有存储某一网络请求的域名及其对应的IP地址,在触发该网络请求之后,将无法从目标应用的缓存中找到该网络请求的域名对应的IP地址。
针对这种情况,可以设置一兜底策略,由DNS服务器对这种情况进行兜底。即在无法从目标应用的缓存中找到相应的IP地址时,发起DNS请求,借由DNS服务器查询相应的IP地址。具体的,可以在原有的查询IP地址的步骤之前,***从目标应用的缓存中查询IP地址的步骤。例如,Java中通常使用lookupAllHostAddr方法,在DNS服务器中查询IP地址。本发明实施例中,可以在调用lookupAllHostAddr方法之前,调用自定的查询方法,先从目标应用的缓存中查询IP地址。若能够查询到IP地址,则返回查询到的IP地址,不再调用lookupAllHostAddr方法。若查询不到IP地址,则继续调用lookupAllHostAddr方法,利用DNS服务器查询IP地址,返回DNS服务器查询到的IP地址。关于利用DNS服务器查询IP地址的过程,这里不再详述。
应当说明的是,查找到第二目标IP地址,说明已经找到了作为接收网络请求的接收方的地址。从而可以基于第二目标IP地址,将网络请求发送至接收方。可以理解的是,这里并不限定网络请求所请求的数据,网络请求所请求的数据可以为具有任意数据结构和数据内容的数据。
步骤104:对应目标域名将第二目标IP地址存储至目标应用的缓存中。
应当说明的是,在目标应用的缓存中未查找到目标域名对应的第一目标IP地址的情况下,说明缓存中没有存储目标域名及其对应的IP地址。若缓存中存储的域名及其对应的IP地址固定不变,则每次遇到这样的网络请求都会经历在缓存中查询相应的IP地址的流程,这样会白白的浪费时间。因此,可以动态更新缓存中存储的域名及其对应的IP地址。在触发某一网络请求后,若无法从缓存中查询到相应的IP地址,可以在DNS服务器中查询到相应的IP地址之后,将该网络请求中的域名及查询到的IP地址对应存储到缓存中。这样,再次遇到这样的网络请求时,从缓存中就可以直接查询到相应的IP地址。
本发明实施例中,通过对InetAddress类的成员变量impl添加动态代理,可以改变原有的IP地址查找方式。在目标应用触发网络请求的情况下,基于被动态代理的成员变量impl,首先从目标应用的缓存中查找相应的IP地址。并在未找到相应的IP地址时,借助DNS服务器进行兜底查询。最终在向查询到的IP地址发起网络请求之后,会对应目标域名将查询到的IP地址存储至目标应用的缓存中,从而使得后续触发对目标域名的网络请求时,可以直接从目标应用的缓存中查询到目标域名对应的IP地址。本发明在Andriod***中网络请求的过程中,将IP地址的查询转移到了应用层,这样,在应用层查询到IP地址的情况下,无需跨进程使用DNS服务器,减少了DNS请求的次数和跨进程通信的次数,提升了网络请求的速度,缩短了用户等待的时间。
可选地,在目标应用的缓存中查找目标域名对应的第一目标IP地址之后,该方法还包括:
在查找到目标域名对应的第一目标IP地址的情况下,通过缓存获取目标域名对应的第一目标IP地址,以对第一目标IP地址发起网络请求。
应当说明的是,若查找到目标域名对应的第一目标IP地址,说明缓存中存储有目标域名及其对应的IP地址。因此,可以直接使用缓存中查询到的第一目标IP地址,向其发起网络请求。
本发明实施例中,在目标应用的缓存中查询到IP地址的情况下,无需跨进程使用DNS服务器,减少了DNS请求的次数和跨进程通信的次数,提升了Andriod***中网络请求的速度,缩短了用户等待的时间。
可选地,在目标应用的缓存中查找目标域名对应的第一目标IP地址,包括:
基于代理在目标应用的缓存中查找域名数组,其中,域名数组中存储有多个不同的域名以及各域名对应的IP地址。
在域名数组中查找目标域名对应的IP地址。
应当说明的是,域名数组为用于存储域名及其对应的IP地址的专用数组,其包含有多个元素,且每一个元素由一对相对应的域名和IP地址组成。也就说,可以在目标应用的缓存中专门设置一域名数组,预先将多个域名以及各域名对应的IP地址存放在该域名数组中。在基于代理查找第一目标IP地址时,优先从该域名数组中进行查找。并将域名数组中的对应网络请求中目标域名的IP地址确定为第一目标IP地址。具体的,可以基于目标应用中涉及到的域名及其对应的IP地址预先生成域名数组,在电子设备安装目标应用时,将该域名数组存储到目标应用的缓存中。
本发明实施例中,将多个不同的域名及其对应的IP地址以数组的形式存储至目标应用的缓存中,从而在域名数组中查找第一目标IP地址,可以提升查找的效率。
可选地,对InetAddress类的成员变量impl添加动态代理,包括:
通过在Application的attachBaseContext()方法或者onCreate()方法中调用编写有动态代理逻辑的自定义方法,对InetAddress类的成员变量impl添加动态代理。
应当说明的是,启动目标应用的过程中,将会对目标应用初始化,并加载一些必要数据。在启动过程中,用户通常不会对目标应用进行操作。在启动完成之后,运行目标应用的过程中,用户将根据自己的需求在目标应用上进行各种操作。基于此,可以将添加动态代理的时机设置在用户进行操作之前的启动时刻。这样,可以避免由于对成员变量impl添加动态代理不及时,导致的无法从缓存中查询到第一目标IP地址的情况。
具体的,可以在Application的attachBaseContext()方法或者onCreate()方法中调用自定义的hookDnsCacheSizeAndTime()方法,该自定义的hookDnsCacheSizeAndTime()方法编写有动态代理逻辑,从而通过调用hookDnsCacheSizeAndTime()方法可以对InetAddress类的成员变量impl添加动态代理。这里,以IPv6为例进行说明,通过static final InetAddressImpl impl=newInet6AddressImpl(),对成员变量impl进行动态代理,以改变原有成员变量impl中查询IP地址的方法。
本发明实施例中,将添加动态代理的时机设置在用户进行操作之前的启动时刻。从而可以避免由于对成员变量impl添加动态代理不及时,导致的无法从缓存中查询到第一目标IP地址的情况。
下面以一具体的实例对本发明提供的Andriod***中网络请求的方法进行具体说明。
在目标应用的开发过程中使用Java编程语言进行开发,使得开完完成的目标应用可以运行于安卓操作***中。在开发时可以引入依赖库FreeReflection,这样可以解决安卓9.0以上版本对***隐藏的方法不允许反射调用的问题,从而可以保证顺利的利用反射机制完成动态代理的添加。然后在目标应用的启动时机增加自定义方法的调用。即在Application的attachBaseContext()方法中调用自定义的hookDnsCacheSizeAndTime()方法。该自定义的hookDnsCacheSizeAndTime()方法即为对成员变量impl添加动态代理的方法。
在电子设备安装目标应用之后,用户启动目标应用时,将调用自定义的hookDnsCacheSizeAndTime方法对成员变量impl添加动态代理,从而改变Java中原有的查询IP地址的方法,即不再是直接使用lookupAllHostAddr方法查询IP地址。
在运行目标应用的过程中,基于用户的操作将触发一网络请求。进而利用动态代理先从目标应用的缓存中查询网络请求中的域名对应的IP地址。其中,缓存中设置有专门用于存储域名及其对应的IP地址的缓存数组。优先从缓存数组中相应的IP地址。如果查询到相应的IP地址,则返回查询到的IP地址。如果未查询到相应的IP地址。则调用***的流程去获取IP地址,返回获取到的IP地址的同时,将获取的结果放在缓存数组中。这样,再次遇到相同的网络请求时,就可以直接从缓存数组中查询到相应的IP地址。其中,调用***的流程获取IP地址,即为利用lookupAllHostAddr方法从DNS服务器中获取IP地址,这里不再详述。
本发明实施例中,通过对安卓源码进行修改,动态代理InetAddress类的成员变量impl,可以实现在应用层缓存中查询IP地址。在运行目标应用的过程中,运行目标应用的进程可以直接访问到目标应用的缓存,可以减少跨进程从其它地方获取IP地址的次数,从而减少跨进程通信的次数。同时,在从目标应用的缓存中能够获取到IP地址的情况下,无需生成DNS请求,从而可以减少DNS请求的次数。最终,可以提升网络请求的速度,缩短用户等待的时间
以上介绍了本发明实施例提供的Andriod***中网络请求的方法,下面将结合附图介绍本发明实施例提供的Andriod***中网络请求的装置。
如图2所示,本发明实施例提供了一种Andriod***中网络请求的装置,该装置包括:
代理模块21,用于对InetAddress类的成员变量impl添加动态代理;
查询模块22,用于响应于目标应用触发对目标域名的网络请求,基于成员变量impl的动态代理,在目标应用的缓存中查找目标域名对应的第一目标IP地址;
第一发起模块23,用于在未查找到目标域名对应的第一目标IP地址的情况下,通过DNS服务器转发网络请求获取到目标域名对应的第二目标IP地址,以对第二目标IP地址发起网络请求;
存储模块24,用于对应目标域名将第二目标IP地址存储至目标应用的缓存中。
可选地,该装置还包括:
第二发起模块,用于在查找到目标域名对应的第一目标IP地址的情况下,通过缓存获取目标域名对应的第一目标IP地址,以对第一目标IP地址发起网络请求。
可选地,查询模块22,包括:
第一查询单元,用于在目标应用的缓存中查找域名数组,其中,域名数组中存储有多个不同的域名以及各域名对应的IP地址;
第二查询单元,用于在域名数组中查找目标域名对应的IP地址。
可选地,代理模块21具体用于:通过在Application的attachBaseContext()方法或者onCreate()方法中调用编写有动态代理逻辑的自定义方法,对InetAddress类的成员变量impl添加动态代理。
本发明实施例中,通过对InetAddress类的成员变量impl添加动态代理,可以改变原有的IP地址查找方式。在目标应用触发网络请求的情况下,基于被动态代理的成员变量impl,首先从目标应用的缓存中查找相应的IP地址。并在未找到相应的IP地址时,借助DNS服务器进行兜底查询。最终在向查询到的IP地址发起网络请求之后,会对应目标域名将查询到的IP地址存储至目标应用的缓存中,从而使得后续触发对目标域名的网络请求时,可以直接从目标应用的缓存中查询到目标域名对应的IP地址。本发明在Andriod***中网络请求的过程中,将IP地址的查询转移到了应用层,这样,在应用层查询到IP地址的情况下,无需跨进程使用DNS服务器,减少了DNS请求的次数和跨进程通信的次数,提升了网络请求的速度,缩短了用户等待的时间。
本申请实施例提供的Andriod***中网络请求的装置能够实现图1的方法实施例实现的各个过程,实现相同的技术效果,为避免重复,这里不再赘述。
另一方面,本发明实施例还提供了一种电子设备,包括存储器、处理器、总线以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述Andriod***中网络请求的方法中的步骤。
举个例子如下,图3示出了一种电子设备的实体结构示意图。
如图3所示,该电子设备可以包括:处理器(processor)310、通信接口(Communications Interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行如下方法:
对InetAddress类的成员变量impl添加动态代理;
响应于目标应用触发对目标域名的网络请求,基于成员变量impl的动态代理,在目标应用的缓存中查找目标域名对应的第一目标IP地址;
在未查找到目标域名对应的第一目标IP地址的情况下,通过DNS服务器转发网络请求获取到目标域名对应的第二目标IP地址,以对第二目标IP地址发起网络请求;
对应目标域名将第二目标IP地址存储至目标应用的缓存中。
此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再一方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的Andriod***中网络请求的方法,例如包括:
对InetAddress类的成员变量impl添加动态代理;
响应于目标应用触发对目标域名的网络请求,基于成员变量impl的动态代理,在目标应用的缓存中查找目标域名对应的第一目标IP地址;
在未查找到目标域名对应的第一目标IP地址的情况下,通过DNS服务器转发网络请求获取到目标域名对应的第二目标IP地址,以对第二目标IP地址发起网络请求;
对应目标域名将第二目标IP地址存储至目标应用的缓存中。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种Andriod***中网络请求的方法,其特征在于,所述方法包括:
对InetAddress类的成员变量impl添加动态代理;
响应于目标应用触发对目标域名的网络请求,基于所述成员变量impl的动态代理,在所述目标应用的缓存中查找所述目标域名对应的第一目标IP地址;
在未查找到所述目标域名对应的第一目标IP地址的情况下,通过域名***DNS服务器转发所述网络请求获取到所述目标域名对应的第二目标IP地址,以对所述第二目标IP地址发起所述网络请求;
对应所述目标域名将所述第二目标IP地址存储至所述目标应用的缓存中。
2.根据权利要求1所述的方法,其特征在于,在所述目标应用的缓存中查找所述目标域名对应的第一目标IP地址之后,所述方法还包括:
在查找到所述目标域名对应的第一目标IP地址的情况下,通过缓存获取所述目标域名对应的第一目标IP地址,以对所述第一目标IP地址发起所述网络请求。
3.根据权利要求1所述的方法,其特征在于,在所述目标应用的缓存中查找所述目标域名对应的第一目标IP地址,包括:
在所述目标应用的缓存中查找域名数组,其中,所述域名数组中存储有多个不同的域名以及各域名对应的IP地址;
在所述域名数组中查找所述目标域名对应的IP地址。
4.根据权利要求1所述的方法,其特征在于,所述对InetAddress类的成员变量impl添加动态代理,包括:
通过在Application的attachBaseContext()方法或者onCreate()方法中调用编写有动态代理逻辑的自定义方法,对InetAddress类的成员变量impl添加动态代理。
5.一种Andriod***中网络请求的装置,其特征在于,所述装置包括:
代理模块,用于对InetAddress类的成员变量impl添加动态代理;
查询模块,用于响应于目标应用触发对目标域名的网络请求,基于所述成员变量impl的动态代理,在所述目标应用的缓存中查找所述目标域名对应的第一目标IP地址;
第一发起模块,用于在未查找到所述目标域名对应的第一目标IP地址的情况下,通过域名***DNS服务器转发所述网络请求获取到所述目标域名对应的第二目标IP地址,以对所述第二目标IP地址发起所述网络请求;
存储模块,用于对应所述目标域名将所述第二目标IP地址存储至所述目标应用的缓存中。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
第二发起模块,用于在查找到所述目标域名对应的第一目标IP地址的情况下,通过缓存获取所述目标域名对应的第一目标IP地址,以对所述第一目标IP地址发起所述网络请求。
7.根据权利要求5所述的装置,其特征在于,所述查询模块,包括:
第一查询单元,用于在所述目标应用的缓存中查找域名数组,其中,所述域名数组中存储有多个不同的域名以及各域名对应的IP地址;
第二查询单元,用于在所述域名数组中查找所述目标域名对应的IP地址。
8.根据权利要求5所述的装置,其特征在于,所述代理模块具体用于:通过在Application的attachBaseContext()方法或者onCreate()方法中调用编写有动态代理逻辑的自定义方法,对InetAddress类的成员变量impl添加动态代理。
9.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述计算机程序被所述处理器执行时实现如权利要求1至4中任一项所述的Andriod***中网络请求的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4中任一项所述的Andriod***中网络请求的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310134576.6A CN116346775A (zh) | 2023-02-17 | 2023-02-17 | Andriod***中网络请求的方法及装置、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310134576.6A CN116346775A (zh) | 2023-02-17 | 2023-02-17 | Andriod***中网络请求的方法及装置、电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116346775A true CN116346775A (zh) | 2023-06-27 |
Family
ID=86890645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310134576.6A Pending CN116346775A (zh) | 2023-02-17 | 2023-02-17 | Andriod***中网络请求的方法及装置、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116346775A (zh) |
-
2023
- 2023-02-17 CN CN202310134576.6A patent/CN116346775A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108055248B (zh) | 基于dubbo框架的远程调用方法、服务器及存储介质 | |
RU2673403C2 (ru) | Способ доступа к веб-узлам, устройство и система веб-узла | |
WO2021139127A1 (zh) | 小程序的运行方法、装置、电子设备和存储介质 | |
RU2615057C2 (ru) | Способ и устройство для доступа к web-странице и маршрутизатор | |
US7526771B2 (en) | Method and apparatus for configuring an application while the application is running | |
US9465799B2 (en) | Server-side internationalization and localization of web applications using a scripting language | |
JP5389829B2 (ja) | リモートリソースのウェブアクセスのためのxmlベースのウェブフィード | |
JP6945782B2 (ja) | ウェブページとネイティブアプリケーションの間の通信を実現する方法及び装置並びに電子装置 | |
JP2003288280A (ja) | コンテクスト情報提供システムおよび方法 | |
US10574724B2 (en) | Automatic discovery of management nodes and generation of CLI using HA module | |
US8621092B2 (en) | Remote portlet consumer with enhanced resource URL processing | |
JP6182160B2 (ja) | 実行中のプロセスへのコードの動的挿入 | |
WO2013097592A1 (zh) | 脚本加载技术 | |
US20020069236A1 (en) | Methods and systems for providing resources adapted to a user environment | |
CN113965543B (zh) | 一种应用服务器的访问方法、装置及存储介质 | |
CN111338829B (zh) | 远程过程调用服务的调用方法及装置 | |
CN112637126B (zh) | 一种服务注册方法及Pod | |
CN105279156A (zh) | 网络信息通信方法及网络信息浏览装置 | |
CN112235132B (zh) | 动态配置服务的方法、装置、介质以及服务器 | |
CN116346775A (zh) | Andriod***中网络请求的方法及装置、电子设备 | |
WO2014043864A1 (zh) | 应用调用的方法及操作***、浏览器 | |
US7921104B2 (en) | Invoking actions on data via LDAP requests | |
US20230088115A1 (en) | Generating early hints informational responses at an intermediary server | |
US11556608B2 (en) | Caching for single page web applications | |
US10659424B2 (en) | Determining status of domain name registration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |