CN108040126B - 发起http请求的方法及装置 - Google Patents
发起http请求的方法及装置 Download PDFInfo
- Publication number
- CN108040126B CN108040126B CN201711469292.3A CN201711469292A CN108040126B CN 108040126 B CN108040126 B CN 108040126B CN 201711469292 A CN201711469292 A CN 201711469292A CN 108040126 B CN108040126 B CN 108040126B
- Authority
- CN
- China
- Prior art keywords
- http
- http request
- class
- interface
- request
- 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.)
- Active
Links
Images
Classifications
-
- 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/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种发起超文本传输协议HTTP请求的方法及装置,在上述方法中,在业务层与负责HTTP请求的模块之间构建框架,其中,该框架包括:HTTP工厂类及HTTP请求框架接口;HTTP工厂类创建各种HTTP请求库基于HTTP请求框架接口实现类的实例,并将HTTP请求框架接口返回给业务层;在程序启动时,业务层根据当前HTTP请求库选择并调用HTTP请求框架接口向服务器发起HTTP请求。通过本发明提供的技术方案,在程序启动时选择不同的HTTP请求框架接口,从而可以保证仅需要修改少量代码,就能够向服务器发起HTTP请求。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种发起HTTP请求的方法及装置。
背景技术
超文本传输协议(HyperText Transfer Protocol,简称为HTTP)是当今互联网应用最广的一种网络协议,客户端可通过HTTP协议向服务器发起请求,服务器根据请求返回对应的数据内容给客户端。
随着近年互联网技术的高速发展,各种语言下实现HTTP协议的程序库也在不断进化完善,速度与效率在不断提升。一个在线上运行的程序也会随着行业的发展不断迭代改进,而负责HTTP请求的模块处于程序较为底层的模块,所有涉及HTTP请求的业务都会与其产生依赖。很多程序要更换速度更快、效率更高的HTTP库时,往往因为与其产生依赖的业务代码太多,修改量大,麻烦,风险大等现实问题而作罢。
因此,如何在更换速度更快、效率更高的HTTP库时,能够大量减少对上层业务代码的修改是目前亟待解决的问题。
发明内容
本发明的主要目的在于公开了一种发起HTTP请求的方法及装置,以至少解决相关技术中在更换速度更快、效率更高的HTTP库时,能够大量减少对上层业务代码的修改,目前还缺乏相应技术方案的问题。
根据本发明的一个方面,提供了一种发起HTTP请求的方法。
根据本发明的发起HTTP请求的方法包括:在业务层与负责HTTP请求的模块之间构建框架,其中,上述框架包括:HTTP工厂类及HTTP请求框架接口;上述HTTP工厂类创建各种HTTP请求库基于HTTP请求框架接口实现类的实例,并将上述HTTP请求框架接口返回给上述业务层;在程序启动时,上述业务层根据当前HTTP请求库选择并调用HTTP请求框架接口向服务器发起HTTP请求。
根据本发明的另一方面,提供了一种发起HTTP请求的装置。
根据本发明的发起HTTP请求的装置包括:构建模块,用于在业务层与负责HTTP请求的模块之间构建框架,其中,上述框架包括:HTTP工厂类及HTTP请求框架接口;第一创建模块,用于触发上述HTTP工厂类创建各种HTTP请求库基于HTTP请求框架接口实现类的实例,并将上述HTTP请求框架接口返回给上述业务层;第一请求模块,用于在程序启动时,触发上述业务层根据当前HTTP请求库选择并调用HTTP请求框架接口向服务器发起HTTP请求。
与现有技术相比,本发明实施例至少具有以下优点:在业务层与负责HTTP请求的模块之间构建一个框架,使得所有业务都通过该框架接口进行HTTP请求,面对不同的HTTP请求库,在遵循该框架接口的前提下提供对应的适配类。通过在程序启动时选择不同的HTTP请求框架接口,从而可以保证仅需要修改少量代码,就能够向服务器发起HTTP请求。
附图说明
图1是根据本发明实施例的发起HTTP请求的方法的流程图;
图2是根据本发明优选实施例的框架的结构框图;
图3是根据本发明实施例的发起HTTP请求的装置的结构框图;以及
图4是根据本发明优选实施例的发起HTTP请求的装置的结构框图。
具体实施方式
下面结合说明书附图对本发明的具体实现方式做一详细描述。
图1是根据本发明实施例的发起HTTP请求的方法的流程图。如图1所示,该发起HTTP请求的方法包括:
步骤S101:在业务层与负责HTTP请求的模块之间构建框架,其中,上述框架包括:HTTP工厂类及HTTP请求框架接口;
步骤S103:上述HTTP工厂类创建各种HTTP请求库基于HTTP请求框架接口实现类的实例,并将上述HTTP请求框架接口返回给上述业务层;
步骤S105:在程序启动时,上述业务层根据当前HTTP请求库选择并调用HTTP请求框架接口向服务器发起HTTP请求。
在业务层与负责HTTP请求的模块之间构建一个框架,使得所有业务都通过该框架接口进行HTTP请求,面对不同的HTTP请求库,在遵循该框架接口的前提下提供对应的适配类。通过在程序启动时选择不同的HTTP请求框架接口,从而可以保证仅需要修改少量代码,就能够向服务器发起HTTP请求。
优选地,上述框架除了包括HTTP请求框架接口之外,还可以包括但不限于:用于创建上述HTTP请求的HTTP创建框架接口、HTTP响应框架接口、以及HTTP响应Body接口。
优选地,上述框架除了包括:HTTP工厂类之外,还可以包括但不限于:上述HTTP工厂类在创建各种HTTP请求库基于HTTP请求框架接口实现类的实例时的初始化参数类、负责存储HTTP请求或响应中的Headers类、当发起HTTP GET请求时的查询字符串存储类、当发起HTTP POST请求时需附带的Body类。
其中,上述HTTP请求库可以为多种请求库,例如,okhttp请求库,Volley请求库,Retrofit请求库等。
优选地,在上述业务层根据当前HTTP请求库选择并调用HTTP请求框架接口向服务器发起HTTP请求之后,还可以包括以下处理:上述服务器通过上述当前HTTP请求库,实现上述HTTP响应框架接口的实现类,并将上述HTTP响应框架接口返回给上述业务层,其中,在上述实现HTTP响应框架接口的实现类中,Body方法返回了实现上述HTTP响应Body接口的实现类。
图2是根据本发明优选实施例的框架的结构框图。如图2所示,该框架包括的类如下:
HttpFactory:Http工厂类,负责创建实现IHttp接口实现类的实例;
HttpConfig:Http工厂类在创建实现IHttp接口实现类的实例时的初始化参数类;
HttpHeaders:负责存储HTTP请求或响应中的Headers类;
HttpQueryParams:当发起HTTP GET请求时的查询字符串存储类;
HttpRequestBody:当发起HTTP POST请求时需附带的Body类。
如图2所示,该框架包括的接口如下:
IHttp:框架接口,负责创建HTTP请求;
IHttpRequest:框架接口,负责向服务器发起HTTP请求;
IHttpResponse:框架接口,代表服务器返回的HTTP相应;
IHttpResponseBody:框架接口,服务器返回的HTTP相应中的数据内容。
其中,图2中所有接口(Interface)名均以I开头,图2中还示出了以okhttp请求库为例,所有接口的实现(Implement)类。具体如下:
OkHttpImpl:OkHttp请求库对IHttp框架接口的适配实现类;
OkHttpRequestImpl:OkHttp请求库对IHttpRequest框架接口的适配实现类;
OkHttpResponseImpl:OkHttp请求库对IHttpResponse框架接口的适配实现类;
OkHttpResponseBodyImpl:OkHttp请求库对IHttpResponseBody框架接口的适配实现类。
这些接口的实现(Implement)类均包含Impl后缀,其余类均为简单类,本身无法单独存在,需与接口或实现产生依赖才能完成其职责。Http代表相关类,HTTP代表协议。
本发明实施例的框架的实现依赖于面向对象编程语言中的“多态”,同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类或接口的指针,来调用派生类或实现类中的方法。
在本框架设计中,HttpFactory负责通过HttpConfig创建适配不同Http请求库的实现类,并且以IHttp接口的形式返回给业务层,这样各业务代码不会直接与具体的Http请求库适配类产生依赖。但由于多态性,实际上对IHttp接口的调用是在调用某个实现IHttp接口具体的Http请求库适配类。同理,IHttp中request方法的返回参数也是IHttpResponse接口,IHttpResponse中的body方法返回的是IHttpResponseBody接口,均不会与具体某个Http请求库产生依赖。HttpFactory类关键代码如下:
优选地,上述方法还可以包括:当上述当前HTTP请求库为新HTTP请求库时,在上述框架的HTTP工厂类中添加与上述新HTTP请求库对应的工厂方法;上述对应的工厂方法创建上述新增加的HTTP请求库基于上述HTTP请求框架接口实现类的实例,并将上述HTTP请求框架接口返回给上述业务层;在程序启动时,上述业务层根据上述新HTTP请求库选择并调用HTTP请求框架接口向服务器发起HTTP请求。
下面以OkHttp请求库基于本框架的实现类为例进行说明。
实现IHttp接口的OkHttpImpl类在request方法中返回实现IHttpRequest接口的OkHttpRequestImpl类,关键代码如下:
在OkHttpRequestImpl类中,某个请求动作(如POST)返回实现了IHttpResponse接口的OkHttpResponseImpl类,关键代码如下:
在OkHttpResponseImpl中,body方法返回了实现了IHttpResponseBody接口的OkHttpResponseBodyImpl实现类,关键代码如下:
从上面可以看出业务层依赖接口,通过使用Http请求库完整实现框架接口,就可以在HttpFactory类中添加一个新的工厂方法,创建一个新的实现IHttp接口的实例,达到快速更换HTTP请求方法实现方案的功能。
通过接口进行所有操作,可以避免与具体实现类产生依赖,良好的框架设计可以使得程序很方便地实现更换,而大量减少对业务层代码的改动。
图3是根据本发明实施例的发起HTTP请求的装置的结构框图。如图3所示,该发起HTTP请求的装置包括:构建模块30,用于在业务层与负责HTTP请求的模块之间构建框架,其中,上述框架包括:HTTP工厂类及HTTP请求框架接口;第一创建模块32,用于触发上述HTTP工厂类创建各种HTTP请求库基于HTTP请求框架接口实现类的实例,并将上述HTTP请求框架接口返回给上述业务层;第一请求模块34,用于在程序启动时,触发上述业务层根据当前HTTP请求库选择并调用HTTP请求框架接口向服务器发起HTTP请求。
构建模块30在业务层与负责HTTP请求的模块之间构建一个框架,使得所有业务都通过该框架接口进行HTTP请求,面对不同的HTTP请求库,在遵循该框架接口的前提下提供对应的适配类。第一请求模块34通过在程序启动时选择不同的HTTP请求框架接口,从而可以保证仅需要修改少量代码,就能够向服务器发起HTTP请求。
优选地,上述框架还可以包括:用于创建上述HTTP请求的HTTP创建框架接口、HTTP响应框架接口、以及HTTP响应Body接口。
优选地,如图4所示,上述装置还可以包括:实现模块36,用于触发上述服务器通过上述当前HTTP请求库,实现上述HTTP响应框架接口的实现类,其中,在上述实现HTTP响应框架接口的实现类中,Body方法返回了实现上述HTTP响应Body接口的实现类;返回模块38,用于将上述HTTP响应框架接口返回给上述业务层。
优选地,上述框架还可以包括:上述HTTP工厂类在创建各种HTTP请求库基于HTTP请求框架接口实现类的实例时的初始化参数类、负责存储HTTP请求或响应中的Headers类、当发起HTTP GET请求时的查询字符串存储类、当发起HTTP POST请求时需附带的Body类。
优选地,如图4所示,上述装置还可以包括:添加模块40,用于当上述当前HTTP请求库为新HTTP请求库时,在上述框架的HTTP工厂类中添加与上述新HTTP请求库对应的工厂方法;第二创建模块42,与添加模块40相连接,用于触发上述对应的工厂方法创建上述新增加的HTTP请求库基于上述HTTP请求框架接口实现类的实例,并将上述HTTP请求框架接口返回给上述业务层;第二请求模块44,用于在程序启动时,上述业务层根据上述新HTTP请求库选择并调用HTTP请求框架接口向服务器发起HTTP请求。
需要说明的是,上述装置中各模块相互结合的优选工作方式具体可以参见图1至图2的描述,此处不再赘述。
综上所述,借助本发明提供的上述实施例,在业务层与负责HTTP请求的模块之间构建一个框架,使得所有业务都通过该框架接口进行HTTP请求,面对不同的HTTP请求库,在遵循该框架接口的前提下提供对应的适配类。通过在程序启动时选择不同的HTTP请求框架接口,从而可以保证仅需要修改少量代码,就能够向服务器发起HTTP请求。通过接口进行所有操作,可以避免对具体实现类产生依赖,良好的框架设计可以使得程序很方便地实现更换,而大量减少对业务层代码的改动。通过使用Http请求库完整实现框架接口,当所述当前HTTP请求库为新HTTP请求库时,就可以在HTTP工厂类中添加一个新的工厂方法,创建一个新的实现IHttp接口的实例,达到快速更换HTTP请求方法实现方案的功能。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (6)
1.一种发起超文本传输协议HTTP请求的方法,其特征在于,包括:
在业务层与负责HTTP请求的模块之间构建框架,其中,所述框架包括:HTTP工厂类,HTTP请求框架接口,用于创建所述HTTP请求的HTTP创建框架接口、HTTP响应框架接口、以及HTTP响应Body接口;
所述HTTP工厂类创建各种HTTP请求库基于HTTP请求框架接口实现类的实例,并将所述HTTP请求框架接口返回给所述业务层;
在程序启动时,所述业务层根据当前HTTP请求库选择并调用HTTP请求框架接口向服务器发起HTTP请求,所述服务器通过所述当前HTTP请求库,实现所述HTTP响应框架接口的实现类,并将所述HTTP响应框架接口返回给所述业务层,在所述实现HTTP响应框架接口的实现类中,Body方法返回了实现所述HTTP响应Body IHttpResponseBody接口的实现类。
2.根据权利要求1所述的方法,其特征在于,所述框架还包括:所述HTTP工厂类在创建各种HTTP请求库基于HTTP请求框架接口实现类的实例时的初始化参数类、负责存储HTTP请求或响应中的Headers类、当发起HTTP GET请求时的查询字符串存储类、当发起HTTP POST请求时需附带的Body类。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
当所述当前HTTP请求库为新HTTP请求库时,在所述框架的HTTP工厂类中添加与所述新HTTP请求库对应的工厂方法;
所述对应的工厂方法创建所述新增加的HTTP请求库基于所述HTTP请求框架接口实现类的实例,并将所述HTTP请求框架接口返回给所述业务层;
在程序启动时,所述业务层根据所述新HTTP请求库选择并调用HTTP请求框架接口向服务器发起HTTP请求。
4.一种发起超文本传输协议HTTP请求的装置,其特征在于,包括:
构建模块,用于在业务层与负责HTTP请求的模块之间构建框架,其中,所述框架包括:HTTP工厂类,HTTP请求框架接口,用于创建所述HTTP请求的HTTP创建框架接口、HTTP响应框架接口、以及HTTP响应Body接口;
第一创建模块,用于触发所述HTTP工厂类创建各种HTTP请求库基于HTTP请求框架接口实现类的实例,并将所述HTTP请求框架接口返回给所述业务层;
第一请求模块,用于在程序启动时,触发所述业务层根据当前HTTP请求库选择并调用HTTP请求框架接口向服务器发起HTTP请求;
实现模块,用于触发所述服务器通过所述当前HTTP请求库,实现所述HTTP响应框架接口的实现类,其中,在所述实现HTTP响应框架接口的实现类中,Body方法返回了实现所述HTTP响应Body IHttpResponseBody接口的实现类;
返回模块,用于将所述HTTP响应框架接口返回给所述业务层。
5.根据权利要求4所述的装置,其特征在于,所述框架还包括:所述HTTP工厂类在创建各种HTTP请求库基于HTTP请求框架接口实现类的实例时的初始化参数类、负责存储HTTP请求或响应中的Headers类、当发起HTTP GET请求时的查询字符串存储类、当发起HTTP POST请求时需附带的Body类。
6.根据权利要求4或5所述的装置,其特征在于,还包括:
添加模块,用于当所述当前HTTP请求库为新HTTP请求库时,在所述框架的HTTP工厂类中添加与所述新HTTP请求库对应的工厂方法;
第二创建模块,用于触发所述对应的工厂方法创建所述新增加的HTTP请求库基于所述HTTP请求框架接口实现类的实例,并将所述HTTP请求框架接口返回给所述业务层;
第二请求模块,用于在程序启动时,所述业务层根据所述新HTTP请求库选择并调用HTTP请求框架接口向服务器发起HTTP请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711469292.3A CN108040126B (zh) | 2017-12-29 | 2017-12-29 | 发起http请求的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711469292.3A CN108040126B (zh) | 2017-12-29 | 2017-12-29 | 发起http请求的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108040126A CN108040126A (zh) | 2018-05-15 |
CN108040126B true CN108040126B (zh) | 2021-07-16 |
Family
ID=62098041
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711469292.3A Active CN108040126B (zh) | 2017-12-29 | 2017-12-29 | 发起http请求的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108040126B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831365A (zh) * | 2020-07-29 | 2020-10-27 | 中国平安财产保险股份有限公司 | 接口路由转发方法、系统、计算机设备及可读存储介质 |
CN113296987B (zh) * | 2021-06-24 | 2023-02-07 | 平安壹钱包电子商务有限公司 | 调用模块的接口调用方法、装置、计算机设备及存储介质 |
CN114039963A (zh) * | 2021-11-08 | 2022-02-11 | 浙江岩华文化科技有限公司 | 数据传输方法、装置、电子装置和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067511A (zh) * | 2012-12-28 | 2013-04-24 | 上海寰创通信科技股份有限公司 | 一种http请求处理的控制方法 |
CN107071017A (zh) * | 2017-03-31 | 2017-08-18 | 武汉斗鱼网络科技有限公司 | 用于安卓系统的网络请求代理工具及代理方法 |
CN107438097A (zh) * | 2017-06-26 | 2017-12-05 | 北京五八信息技术有限公司 | 网络请求处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100717166B1 (ko) * | 2005-02-16 | 2007-05-11 | 삼성전자주식회사 | 홈네트워크의 서비스 프레임워크 |
-
2017
- 2017-12-29 CN CN201711469292.3A patent/CN108040126B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103067511A (zh) * | 2012-12-28 | 2013-04-24 | 上海寰创通信科技股份有限公司 | 一种http请求处理的控制方法 |
CN107071017A (zh) * | 2017-03-31 | 2017-08-18 | 武汉斗鱼网络科技有限公司 | 用于安卓系统的网络请求代理工具及代理方法 |
CN107438097A (zh) * | 2017-06-26 | 2017-12-05 | 北京五八信息技术有限公司 | 网络请求处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108040126A (zh) | 2018-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108255615B (zh) | 跨语言调用方法、服务器及存储介质 | |
CN108055248B (zh) | 基于dubbo框架的远程调用方法、服务器及存储介质 | |
US9544355B2 (en) | Methods and apparatus for realizing short URL service | |
CN108040126B (zh) | 发起http请求的方法及装置 | |
EP3399435A1 (en) | Method and device for processing short link, and short link server | |
US20110113090A1 (en) | Dynamic mobile client | |
CN107743616A (zh) | 提供应用编程接口代理服务的端点管理系统 | |
CN113364853B (zh) | 一种业务服务系统、业务请求方法及网关设备 | |
JP7063935B2 (ja) | レンダリング方法、装置、電子デバイス、記憶媒体、及びプログラム | |
CN101729491B (zh) | 一种增强基于脚本业务的应用可靠性的方法、装置和系统 | |
CN109918435A (zh) | 一种业务接口的处理方法及系统 | |
CN112054998A (zh) | 代理服务方法、装置、设备和计算机可读存储介质 | |
CN110049059A (zh) | 一种外网设备与内网设备间通信方法及相关装置 | |
US20110320286A1 (en) | System And Method For Integrating An Ad Banner With A Calling Application | |
WO2023142911A1 (zh) | 业务处理方法及装置 | |
CN109871289A (zh) | 一种远程过程调用rpc服务生成方法及装置 | |
CN112437006A (zh) | 基于api网关的请求控制方法、装置、电子设备和存储介质 | |
CN107426266A (zh) | 数据处理方法和服务器 | |
CN102685195A (zh) | 应用服务组合方法、装置及系统 | |
US10037417B1 (en) | Transformation of network activity data for user identification | |
CN112379951A (zh) | 服务接口的访问方法、装置、电子设备和介质 | |
CN105005678B (zh) | 资源交换平台获取角色信息的方法和装置 | |
CN109766489A (zh) | 数据处理方法、客户端、服务器及计算机可读存储介质 | |
US9338248B2 (en) | Parameter driven value conversion framework in client/server architectures | |
KR20070061067A (ko) | 웹 서비스 기반 개방형 api를 지원하는 애플리케이션서버에서 통신망 이벤트 통보 장치 및 그 방법 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220309 Address after: 2028, No. 66, North Fourth Ring West Road, Haidian District, Beijing 100080 Patentee after: BEIJING LANGMA SHULIAN TECHNOLOGY Co.,Ltd. Address before: 550022 room b305, standard workshop auxiliary room, Jinyang science and Technology Industrial Park, national high tech Zone, Guiyang City, Guizhou Province Patentee before: GUIYANG YUWAN TECHNOLOGY CO.,LTD. |
|
TR01 | Transfer of patent right |