CN108040126B - 发起http请求的方法及装置 - Google Patents

发起http请求的方法及装置 Download PDF

Info

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
Application number
CN201711469292.3A
Other languages
English (en)
Other versions
CN108040126A (zh
Inventor
段凌云
陈正超
余非
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING LANGMA SHULIAN TECHNOLOGY Co.,Ltd.
Original Assignee
Guiyang Yuwan Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guiyang Yuwan Technology Co ltd filed Critical Guiyang Yuwan Technology Co ltd
Priority to CN201711469292.3A priority Critical patent/CN108040126B/zh
Publication of CN108040126A publication Critical patent/CN108040126A/zh
Application granted granted Critical
Publication of CN108040126B publication Critical patent/CN108040126B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols 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请求的方法及装置
技术领域
本发明涉及通信领域,具体而言,涉及一种发起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类关键代码如下:
Figure BDA0001531679730000071
优选地,上述方法还可以包括:当上述当前HTTP请求库为新HTTP请求库时,在上述框架的HTTP工厂类中添加与上述新HTTP请求库对应的工厂方法;上述对应的工厂方法创建上述新增加的HTTP请求库基于上述HTTP请求框架接口实现类的实例,并将上述HTTP请求框架接口返回给上述业务层;在程序启动时,上述业务层根据上述新HTTP请求库选择并调用HTTP请求框架接口向服务器发起HTTP请求。
下面以OkHttp请求库基于本框架的实现类为例进行说明。
实现IHttp接口的OkHttpImpl类在request方法中返回实现IHttpRequest接口的OkHttpRequestImpl类,关键代码如下:
Figure BDA0001531679730000081
在OkHttpRequestImpl类中,某个请求动作(如POST)返回实现了IHttpResponse接口的OkHttpResponseImpl类,关键代码如下:
Figure BDA0001531679730000082
Figure BDA0001531679730000091
在OkHttpResponseImpl中,body方法返回了实现了IHttpResponseBody接口的OkHttpResponseBodyImpl实现类,关键代码如下:
Figure BDA0001531679730000092
Figure BDA0001531679730000101
从上面可以看出业务层依赖接口,通过使用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请求。
CN201711469292.3A 2017-12-29 2017-12-29 发起http请求的方法及装置 Active CN108040126B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100717166B1 (ko) * 2005-02-16 2007-05-11 삼성전자주식회사 홈네트워크의 서비스 프레임워크

Patent Citations (3)

* Cited by examiner, † Cited by third party
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