一种数据传输方法、装置及系统与流程

文档序号:12037892阅读:287来源:国知局
一种数据传输方法、装置及系统与流程

本发明涉及通信技术领域,特别涉及一种数据传输方法、装置及系统。



背景技术:

随着互联网技术的不断发展,客户端及服务端能够支持的报文序列化的方式越来越多,不同的客户端及服务端支持的序列化方式可能不同。但客户端与服务端在进行数据交互时必须要采用同一种序列化方式对数据进行封装和解析。

为了实现序列化方式的统一,现有技术采用的技术方案为:客户端与服务端发起数据交互前先进行一次报文交互,协商出一种双方都支持的报文序列化方式,并在后续进行数据交互时使用协商出的序列化方式进行数据交互。然而这种通过报文协商实现序列化方式的统一需要在数据交互前多进行一次报文交互,增大了网络的负载,严重影响到客户端与服务端进行数据交互的效率。



技术实现要素:

本发明提供一种数据传输方法、装置及系统,用于解决现有技术存在客户端与服务端需要在数据交互前协商报文序列化方式,导致网络复负载量大的技术问题。

本发明实施例第一方面提供一种数据传输系统,包括客户端和服务端;

所述客户端用于:以第一序列化方式对请求数据进行序列化处理,获得序列化的请求数据;生成第一超文本传输协议(hypertexttransferprotocol,http)请求报文,所述第一http请求报文携带所述序列化的请求数据以及表征所述第一序列化方式的标识;将所述第一http请求报文发送给服务端;

所述服务端用于:接收所述客户端发送的所述第一http请求报文;从所述第一http请求报文中获得所述标识,判断所述服务端是否支持所述标识表征的所述第一序列化方式;在所述服务端支持所述第一序列化方式时,根据所述第一序列化方式从所述第一http请求报文中获得所述请求数据。

在上述方案中,客户端与服务端可以不需要在数据交互前协商报文序列化方式,而是客户端直接向服务端发送发送承载着请求数据的请求报文;当服务端接收到客户端发送的请求报文时,可通过识别请求报文携带的标识确定客户端的序列化方式,并在服务端支持该序列化方式时对请求报文进行反序列化处理,从而获得客户端发送的请求数据。本方案解决了客户端与服务端需要在数据交互前协商报文序列化方式导致的网络复负载量大的技术问题,提高了客户端与服务端的数据交互效率。不仅如此,本方案中的服务端能够支持本领域常用的序列化方式,所以可以不需要针对客户端开发多种报文序列化方式去对接不同的服务端,节约了服务端的开发成本。

可选的,所述服务端还用于:在获得所述请求数据之后,对所述请求数据进行处理,得到响应数据;以所述第一序列化方式对所述响应数据进行序列化处理,获得序列化的响应数据;生成第一http响应报文,所述第一http响应报文携带所述序列化的响应数据;将所述第一http响应报文发送给所述客户端;所述客户端还用于:接收所述服务端发送的所述第一http响应报文;根据所述第一序列化方式从所述第一http响应报文中获得所述响应数据。通过本方式,服务端在支持客户端对请求数据进行序列化的序列化方式时,可采用该序列化方式对客户端进行响应,进一步完善了客户端与服务端之间进行数据传输的方案。

可选的,所述表征所述第一序列化方式的标识位于所述第一http请求报文的请求行中,或者位于所述第一http请求报文的请求头中,或者位于所述第一http请求报文的请求正文中。通过本方式,客户端与服务端可以在携带通信数据的报文中携带客户端对数据进行序列化处理的序列化方式,不需要在数据交互前进行序列化方式的协商过程,完善了上述客户端与服务端之间进行数据传输的方案。

可选的,所述表征所述第一序列化方式的标识以后缀的形式或以路径参数的形式位于所述第一http请求报文的请求行中的统一资源定位符(uniformresourcelocator,url)中。通过本方式可以减小报文的大小,进一步减轻网络负载,提高客户端与服务端之间进行数据传输的效率。

可选的,所述服务端还用于:在所述服务端不支持所述第一序列化方式时,所述服务端确定所述服务端支持的至少一种序列化方式;生成第二http响应报文,所述第二http响应报文携带表征所述服务端支持的至少一种序列化方式的标识;将所述第二http响应报文发送给所述客户端;所述客户端还用于:接收所述服务端发送的所述第二http响应报文,从所述第二http响应报文中获知所述服务端支持的所述至少一种序列化方式;确定所述客户端及所述服务端共同支持的序列化方式;以第二序列化方式对所述请求数据进行序列化处理,获得序列化的请求数据,其中所述第二序列化方式为所述客户端及所述服务端共同支持的序列化方式中的任一序列化方式;生成第二http请求报文,所述第二http请求报文携带所述序列化的请求数据以及表征所述第二序列化方式的标识;将所述第二http请求报文发送给所述服务端。在本方式中,如果服务端不支持所述第一序列化方式,则服务端可以将其支持的序列化方式反馈给客户端,让客户端从服务端反馈的序列化方式中选择出客户端与服务端共同支持的序列化方式再次发起数据交互,通过本方式,可以在减轻网络负载的同时保证数据交互的成功率,进一步完善了客户端与服务端之间进行数据传输的方案。

本发明实施例第二方面提供一种数据传输方法,应用于客户端,所述方法包括:所述客户端以第一序列化方式对请求数据进行序列化处理,获得序列化的请求数据;所述客户端生成第一http请求报文,所述第一http请求报文携带所述序列化的请求数据以及表征所述第一序列化方式的标识;所述客户端将所述第一http请求报文发送给服务端。

可选的,所述表征所述第一序列化方式的标识位于所述第一http请求报文的请求行中,或者位于所述第一http请求报文的请求头中,或者位于所述第一http请求报文的请求正文中。

可选的,所述表征所述第一序列化方式的标识以后缀的形式或以路径参数的形式位于所述第一http请求报文的请求行中的url中。

可选的,在所述客户端将所述第一http请求报文发送给服务端之后,所述方法还包括:所述客户端接收所述服务端返回的响应报文,根据所述响应报文的状态行中的状态码确定所述响应报文携带序列化的响应数据;所述客户端根据所述第一序列化方式从所述响应报文中获得响应数据。

可选的,在所述客户端将所述第一http请求报文发送给服务端之后,所述方法还包括:所述客户端接收所述服务端发送的响应报文,根据所述响应报文的状态行中的状态码确定所述响应报文携带表征所述服务端支持的至少一种序列化方式的标识;所述客户端从所述响应报文中获知所述服务端支持的至少一种序列化方式;所述客户端确定所述客户端及所述服务端共同支持的序列化方式;所述客户端以第二序列化方式对所述请求数据进行序列化处理,获得序列化的请求数据,其中所述第二序列化方式为所述客户端及所述服务端共同支持的序列化方式中的任一序列化方式;所述客户端生成第二http请求报文,所述第二http请求报文携带所述序列化的请求数据以及表征所述第二序列化方式的标识;所述客户端将所述第二http请求报文发送给所述服务端。

本发明实施例第三方面提供一种数据传输方法,应用于服务端,所述方法包括:所述服务端接收客户端发送的第一http请求报文,所述第一http请求报文携带序列化的请求数据以及表征所述客户端对请求数据进行序列化处理的第一序列化方式的标识;所述服务端从所述第一http请求报文中获得所述标识,判断所述服务端是否支持所述标识表征的所述第一序列化方式;如果所述服务端支持所述第一序列化方式,则所述服务端根据所述第一序列化方式从所述第一http请求报文中获得所述请求数据。

可选的,所述表征所述第一序列化方式的标识位于所述第一http请求报文的请求行中,或者位于所述第一http请求报文的请求头中,或者位于所述第一http请求报文的请求正文中。

可选的,所述表征所述第一序列化方式的标识以后缀的形式或以路径参数的形式位于所述第一http请求报文的请求行中的url中。

可选的,在所述服务端获得所述请求数据之后,所述方法还包括:所述服务端对所述请求数据进行处理,得到响应数据;所述服务端以所述第一序列化方式对所述响应数据进行序列化处理,获得序列化的响应数据;所述服务端生成第一http响应报文,所述第一http响应报文携带所述序列化的响应数据;所述服务端将所述第一http响应报文发送给所述客户端。

可选的,在所述服务端判断所述服务端是否支持所述第一序列化方式之后,所述方法还包括:如果所述服务端不支持所述第一序列化方式,则所述服务端确定所述服务端支持的至少一种序列化方式;所述服务端生成第二http响应报文,所述第二http响应报文携带表征所述服务端支持的至少一种序列化方式的标识;所述服务端将所述第二http响应报文发送给所述客户端。

本发明实施例第四方面提供一种数据传输装置,包括:处理单元,用于:以第一序列化方式对请求数据进行序列化处理,获得序列化的请求数据;生成第一http请求报文,所述第一http请求报文携带所述序列化的请求数据以及表征所述第一序列化方式的标识;发送单元,用于:将所述第一http请求报文发送给服务端。

可选的,所述装置还包括:接收单元,用于:在所述发送单元将所述第一http请求报文发送给所述服务端之后,接收所述服务端返回的响应报文;所述处理单元还用于:根据所述响应报文的状态行中的状态码确定所述响应报文携带序列化的响应数据;根据所述第一序列化方式从所述响应报文中获得响应数据。

可选的,所述装置还包括:接收单元,用于:在所述发送单元将所述第一http请求报文发送给所述服务端之后,接收所述服务端发送的响应报文;所述处理单元还用于:根据所述响应报文的状态行中的状态码确定所述响应报文携带表征所述服务端支持的至少一种序列化方式的标识;从所述响应报文中获知所述服务端支持的至少一种序列化方式;确定所述装置及所述服务端共同支持的序列化方式;以第二序列化方式对所述请求数据进行序列化处理,获得序列化的请求数据,其中所述第二序列化方式为所述装置及所述服务端共同支持的序列化方式中的任一序列化方式;生成第二http请求报文,所述第二http请求报文携带所述序列化的请求数据以及表征所述第二序列化方式的标识;所述发送单元还用于:将所述第二http请求报文发送给所述服务端。

可选的,所述表征所述第一序列化方式的标识位于所述第一http请求报文的请求行中,或者位于所述第一http请求报文的请求头中,或者位于所述第一http请求报文的请求正文中。

可选的,所述表征所述第一序列化方式的标识以后缀的形式或以路径参数的形式位于所述第一http请求报文的请求行中的url中。

本发明实施例第五方面提供一种数据传输装置,包括:接收单元,用于:接收客户端发送的第一http请求报文,所述第一http请求报文携带序列化的请求数据以及表征所述客户端对请求数据进行序列化处理的第一序列化方式的标识;处理单元,用于:从所述第一http请求报文中获得所述标识,判断所述装置是否支持所述标识表征的所述第一序列化方式;在所述装置支持所述第一序列化方式时,根据所述第一序列化方式从所述第一http请求报文中获得所述请求数据。

可选的,所述处理单元还用于:对所述请求数据进行处理,得到响应数据;以所述第一序列化方式对所述响应数据进行序列化处理,获得序列化的响应数据;生成第一http响应报文,所述第一http响应报文携带所述序列化的响应数据;所述装置还包括发送单元,用于:将所述第一http响应报文发送给所述客户端。

可选的,所述处理单元还用于:在所述装置不支持所述第一序列化方式时,确定所述装置支持的至少一种序列化方式;生成第二http响应报文,所述第二http响应报文携带表征所述装置支持的至少一种序列化方式的标识;所述装置还包括发送单元,用于:将所述第二http响应报文发送给所述客户端。

可选的,所述表征所述第一序列化方式的标识位于所述第一http请求报文的请求行中,或者位于所述第一http请求报文的请求头中,或者位于所述第一http请求报文的请求正文中。

可选的,所述表征所述第一序列化方式的标识以后缀的形式或以路径参数的形式位于所述第一http请求报文的请求行中的url中。

本发明实施例第六方面提供一种客户端,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器、通信接口;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,利用所述通信接口执行本发明实施例第二方面提供的所述数据传输的方法。

本发明实施例第七方面提供一种服务端,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器、通信接口;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,利用所述通信接口执行本发明实施例第三方面提供的所述数据传输的方法。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术中客户端与服务端协商序列化方式的方法流程图;

图2为本发明实施例提供的一种数据传输系统的示意图;

图3为本发明实施例提供的一种数据传输方法的流程图;

图4为本发明实施例提供的一种数据传输方法的流程图;

图5为本发明实施例提供的一种数据传输装置的结构示意图;

图6为本发明实施例提供的一种数据传输装置的结构示意图;

图7为本发明实施例提供的一种客户端的结构示意图;

图8为本发明实施例提供的一种服务端的结构示意图。

具体实施方式

下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。

需要理解的是,在本发明实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。在本发明实施例的描述中“多个”,是指两个或两个以上。

本发明实施例中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

目前,客户端及服务端能够支持的报文序列化的方式较多,不同的客户端及服务端支持的序列化方式可能不同,但客户端与服务端需要采用同一序列化方式对数据进行封装和解析才能成功完成数据交互。为了实现序列化方式的统一,现有技术采用的技术方案通常为:在客户端与服务器建立传输控制协议(transmissioncontrolprotocol,tcp)连接后、客户端与服务端发起数据交互前,先进行一次报文交互,以协商出一种双方都支持的报文序列化方式,并在后续进行数据交互时使用协商出的序列化方式进行数据交互。

图1为现有技术协商序列化方式的具体实现过程,具体包括:

步骤101,客户端与服务端在建立起tcp连接后,客户端发送一个http请求给服务端,请求头中accept字段携带有客户端支持的序列化方式列表。

步骤102,服务端接收到所述http请求后,读取accept字段得到客户端支持的序列化方式列表;

步骤103,服务端将客户端支持的序列化方式与服务端支持的序列化方式进行比对,选取一个或多个双方支持的序列化方式。

步骤104,服务端返回一个http响应给客户端,响应头中accept字段携带选取的序列化方式。

步骤105,客户端收到服务端发回的响应后获知协商的序列化方式,并在后续与服务端的数据交换过程采用协商的序列化方式中的某一个。

在上述这种通过协商实现序列化方式统一的方法中,服务端与客户端必须要在正式数据交互前进行一次报文交互,即执行上述步骤101至步骤105。这种方式大大增加了网络的负载,特别是在多用户高并发访问场景下,严重影响到客户端与服务端数据交互的效率。

实施例一

本发明实施例一提供一种数据传输方法,用于解决现有技术存在所述客户端与所述服务端需要在数据交互前协商报文序列化方式,导致网络复负载量大的技术问题。

在介绍传所述数据传输方法前,先介绍实施所述数据传输方法的数据传输系统,所述系统可以包括多个服务端与多个客户端,任意一个客户端与任意一个服务端之间可通过网络连接通信。例如,参照图2所示,所述系统包括客户端21、客户端22、客户端23、服务端23、服务端25及服务端26,客户端21、客户端22、客户端23与服务端23、服务端25、服务端26之间可通过网络实现相互连接和通信,其中服务端23、服务端25、服务端26均能支持本领域常用的序列化方式,所述服务端支持的序列化方式包括但不限于以下:js对象标记(javascriptobjectnotation,json)、可扩展标记语言(extensiblemarkuplanguage,xml)、远程过程调用协议(remoteprocedurecallprotocol,rpc)、海森(hessian)、burlap、actionmessageformat等。

本发明实施例提供数据传输方法能够适用于所述系统中任一服务端与任一客户端之间进行数据交互,且在执行本发明实施例传输数据的方法前,进行数据交互的客户端与服务端已建立tcp连接。接下来以客户端21与服务端24进行数据交互为例,对本发明实施例提供的数据传输方法进行详细说明。

参照图3,本发明实施例一提供数据传输方法包括:

步骤301,客户端21以第一序列化方式对请求数据进行序列化处理,获得序列化的请求数据。

具体的,客户端21至少支持一种序列化方式,客户端21支持的序列化方式包括但不限于以下几种:json、xml、rpc、hessian、burlap、actionmessageformat,所述第一序列化方式可以为客户端21支持的序列化方式中的任一序列化方式。

步骤302,客户端21生成第一http请求报文,所述第一http请求报文携带所述序列化的请求数据以及表征所述第一序列化方式的标识。

具体的,客户端21可将所述序列化的请求数据封装在所述第一http请求报文的正文中,并在所述第一http请求报文的预设字段上承载表征客户端21对请求数据进行序列化的第一序列化方式的标识。

其中,所述预设字段可以位于所述第一http请求报文的请求行中,也可以位于所述第一http请求报文的请求头中,还可以位于所述第一http请求报文的请求正文中,本发明实施例对此不做具体限制。例如,可以指定所述第一http请求报文的请求头中的“accept-encoding”字段为所述预设字段。

步骤303,客户端21将所述第一http请求报文发送给服务端24。

步骤304,服务端24接收客户端21发送的第一http请求报文,并判断服务端24是否支持所述标识表征的所述第一序列化方式。

具体的,服务端24在接收到客户端21发送的第一http请求报文后,从所述第一http请求报文中所述预设字段上获取所述标识,进而获知客户端21生成所述第一http请求报文时的序列化方式,即第一序列化方式;然后将所述第一序列化方式与服务端24支持的序列化方式进行匹配。

如果服务端24支持所述第一序列化方式,则执行步骤305:

步骤305,服务端24根据所述第一序列化方式从所述第一http请求报文中获得所述请求数据。

具体的,在服务端24确定服务端24支持所述第一序列化方式之后,服务端24使用所述第一序列化方式对应的反序列化方式对所述第一http请求报文进行反序列化处理,从而获得所述请求数据。

在上述方案中,客户端21与服务端24可以不需要在数据交互前协商报文序列化方式,而是客户端21直接向服务端24发送承载着请求数据的请求报文,并将表征客户端21对请求数据进行序列化处理的序列化方式的标识增加在请求报文的预设字段中;当服务端24接收到客户端21发送的请求报文时,可通过识别请求报文预设字段上的标识确定客户端21的序列化方式,并在服务端24支持该序列化方式时对请求报文进行反序列化处理,从而获得客户端21发送的请求数据。由于本方案中的服务端24能够支持本领域常用的序列化方式,所以对于大多数客户端21发送的请求报文,服务端24都能够进行反序列化处理从而得到请求数据,即针对大部分的数据交互都可以不进行交互前的报文序列化方式的协商过程,解决了客户端21与服务端24需要在数据交互前协商报文序列化方式导致的网络复负载量大的技术问题,提高了客户端21与服务端24的数据交互效率。

不仅如此,由于本方案中的服务端24能够支持本领域常用的序列化方式,所以可以不需要针对客户端21开发多种报文序列化方式去对接不同的服务端24,节约了服务端24的开发成本。

可选的,参照图3,在步骤305之后,所述方法还包括:

步骤306:服务端24根据所述请求数据及所述第一序列化方式生成第一http响应报文。

具体的,服务端24对所述请求数据进行处理,得到响应数据;服务端24以所述第一序列化方式对所述响应数据进行序列化处理,获得序列化的响应数据;客户端21将所述序列化的响应数据封装在所述第一http响应报文的正文中,并在所述第一http响应报文的状态行中承载表征服务端24已成功响应客户端21请求的状态码,以使得客户端21在接收到所述第一http响应报文时能够获知数据请求成功。

步骤307:服务端24将所述第一http响应报文发送给客户端21。

步骤308:客户端21接收服务端24发送的所述第一http响应报文,并根据所述第一序列化方式从所述第一http响应报文中获得所述响应数据。

具体的,客户端21在接收到所述第一http响应报文发送给客户端21后,通过所述第一http响应报文的状态行中状态码获知服务端24已成功响应客户端21请求,然后使用所述第一序列化方式对应的反序列化方式对所述第一http响应报文进行反序列化处理,得到所述响应数据。

当然,在具体实施过程中,还可能出现除了服务端24不支持客户端21对请求数据进行序列化的序列化方式的原因外的其他原因所导致的数据请求失败的情况,例如服务端24找不到客户端21请求的资源而导致服务端24无法返回对应响应数据的情况,在这种情况下服务端仍然可以返回响应报文,但该报文中没有携带请求数据对应的响应数据,该响应报文可用于告知用户数据请求失败、数据请求失败的具体原因等。由于此部分内容为本领域技术人员所熟知,因此本发明实施例就不再进行赘述。

通过本方式,服务端24在支持客户端21对请求数据进行序列化的序列化方式时,可采用该序列化方式对客户端21进行响应,进一步完善了客户端21与服务端24之间进行数据传输的方案。

可选的,所述表征所述第一序列化方式的标识位于所述第一http请求报文的请求行中的统一资源定位符(uniformresourcelocator,url)中。其中,所述标识在所述url中的形式包括但不限于以下两种:

第1种,所述标识以后缀的形式位于所述第一http请求报文的请求行中的url中。

例如,所述第一序列化方式为xml,所述第一http请求报文的请求行可以为:post/http://www.xxx.com/arg1/arg2.xmlhttp/1.1(crlf)。其中,“http://www.xxx.com/arg1/arg2”为url,“.xml”为表征所述第一序列化方式的标识,“post”为请求方法,“http/1.1”为请求使用的协议以及协议版本。

当然,在具体实施过程中所述第一http请求报文携带的请求方法、url、请求使用的协议以及协议版本还可以有其他可能取值,上述举例仅用于说明所述标识以后缀的形式位于url中,不能用来限定请求方法、url、请求使用的协议以及协议版本。

第2种,所述标识以路径参数的形式位于所述第一http请求报文的请求行中的url中。

例如,所述第一序列化方式为xml,所述第一http请求报文的请求行可以为:post/http://www.xxx.com/arg1/arg2/xml/http/1.1(crlf)。其中,“http://www.xxx.com/arg1/arg2”为url,“/xml/”为表征所述第一序列化方式的标识,“post”为请求方法,“http/1.1”为请求使用的协议以及协议版本。

当然,在具体实施过程中所述第一http请求报文携带的请求方法、url、请求使用的协议以及协议版本还可以有其他可能取值,上述举例仅用于说明所述标识以路径参数的形式位于url中,不能用来限定请求方法、url、请求使用的协议以及协议版本。

现有技术在报文中携带的序列化标识都是在报文头的“accept-encoding”字段上,至少需要20个字节(例如“accept-encoding:xxx\n”),而本方式通过在url上承载序列化标识,相对于现有技术至少节约了15字节。所以通过本方式可以减小报文的大小,进一步减轻网络负载,提高客户端21与服务端24的数据交互的效率。

当然,本发明实施例在具体实施过程中,在极少数情况下可能会出现服务端24不支持所述第一序列化方式的情况,接下来介绍在服务端24不支持所述第一序列化方式时本发明实施例的解决方案。

可选的,在上述步骤304所述的判断服务端24是否支持所述标识表征的所述第一序列化方式之后,如果服务端24不支持所述第一序列化方式,则服务端24可以将其支持的序列化方式反馈给客户端21,让客户端21从服务端24反馈的序列化方式中选择出客户端21与服务端24共同支持的序列化方式再次发起数据交互。参照图4,所述方法具体实现过程包括步骤309至步骤321:

步骤309:服务端24确定服务端24支持的至少一种序列化方式。

在具体实施过程中,服务端24获取服务端24支持的至少一种序列化方式可以是服务端24支持的所有序列化方式,也可以是服务端24支持的所有序列化方式中的部分序列化方式,本发明实施例对此不做具体限制。

步骤310:服务端24生成第二http响应报文,所述第二http响应报文携带表征所述至少一种序列化方式的标识。

具体的,服务端24将表征所述至少一种序列化方式的标识封装在所述第二http响应报文中,所述至少一种序列化方式的标识可以位于所述第二http响应报文的状态行中,也可以位于所述第二http响应报文的响应头中,本发明实施例对此不做具体限制。所述第二http响应报文的状态行中还承载着表征服务端24已未能成功响应客户端21请求的状态码,以使得客户端21在接收到所述第二http响应报文时,能够根据所述状态码获知服务端24不支持所述第一序列化方式因而导致服务端24未能成功响应客户端21的请求,以及所述第二http响应报文携带有表征服务端24支持的至少一种序列化方式的标识。

步骤311:服务端24将所述第二http响应报文发送给客户端21。

步骤312:客户端21接收服务端24发送的所述第二http响应报文,并从所述第二http响应报文中获知服务端24支持的所述至少一种序列化方式。

具体的,客户端21在接收到所述第二http响应报文发送给客户端21后,通过所述第二http响应报文的状态行中状态码获知服务端24未能成功响应客户端21请求,并从所述第二http响应报文中获得表征服务端24支持的至少一种序列化方式的标识,进而获知服务端24支持的所述至少一种序列化方式。

步骤313:客户端21将所述至少一种序列化方式与客户端21支持的序列化方式进行匹配,确定出客户端21及服务端24共同支持的序列化方式。

在具体实施过程中,如果客户端21能够支持多种序列化方式,且在客户端21支持的除所述第一序列化方式外的其他序列化方式中,存在与所述服务反馈的序列化方式相同的序列化方式,客户端21就将这部分相同的序列化方式确定为客户端21及服务端24共同支持的序列化方式;如果客户端21仅支持所述第一序列化方式,或者客户端21支持多种序列化方式但在客户端21支持的除所述第一序列化方式外的其他序列化方式中不存在与所述服务反馈的序列化方式相同的序列化方式,那么客户端21就告知用户从所述服务反馈的序列化方式中选择出至少一种序列化方式对客户端21进行开发,进而使得客户端21存在与服务端24共同支持的序列化方式,并将选择出的至少一种序列化方式确定为客户端21及服务端24共同支持的序列化方式。

步骤314:客户端21以第二序列化方式对所述请求数据进行序列化处理,获得序列化的请求数据,其中所述第二序列化方式为客户端21及服务端24共同支持的序列化方式中的任一序列化方式。

步骤315:客户端21生成第二http请求报文,所述第二http请求报文携带所述序列化的请求数据以及表征所述第二序列化方式的标识。

步骤316:客户端21将所述第二http请求报文发送给服务端24。

步骤317:服务端24接收客户端21发送的所述第二http请求报文,从所述第二http请求报文获取所述表征所述第二序列化方式的标识,并判断服务端24是否支持所述标识表征的所述第二序列化方式,如果服务端24支持所述第二序列化方式,则执行步骤318:

步骤318:服务端24根据所述第二序列化方式从所述第二http请求报文中获得所述请求数据。

在具体实施过程中,在上述步骤317中,服务端24在接收客户端21发送的所述第二http请求报文之后,可以不用执行判断服务端24是否支持所述标识表征的所述第二序列化方式的步骤,而直接执行步骤318。服务端24是否执行所述判断服务端24是否支持所述标识表征的所述第二序列化方式的步骤,可以根据实际需要进行选择,本发明实施例不做具体限制。

步骤319:服务端24根据所述请求数据及所述第二序列化方式生成第三http响应报文。

步骤320:服务端24将所述第三http响应报文发送给客户端21。

步骤321:客户端21接收服务端24发送的所述第三http响应报文,并根据所述第二序列化方式从所述第三http响应报文中获得所述响应数据。

上述步骤314至321的具体实现方式可参照上述步骤301至308,本发明实施例不再进行赘述。

在本方式中,服务端24在收到客户端21的请求报文之后,如果服务端24不支持客户端21发送的请求报文的序列化方式,服务端24就将服务端24支持的至少一种序列化方式返回给客户端21,然后客户端21从服务端24支持的至少一种序列化方式中选择出客户端21与服务端24共同支持的序列化方式再次发起数据交互。通过本方式,可以在减轻网络负载的同时保证数据交互的成功率,进一步完善了客户端21与服务端24之间进行数据传输的方案。

实施例二

本发明实施例二提供一种数据传输方法,应用于上述实施例一中进行数据传输的客户端,所述方法包括:

所述客户端以第一序列化方式对请求数据进行序列化处理,获得序列化的请求数据;

所述客户端生成第一http请求报文,所述第一http请求报文携带所述序列化的请求数据以及表征所述第一序列化方式的标识;

所述客户端将所述第一http请求报文发送给服务端。

可选的,所述表征所述第一序列化方式的标识位于所述第一http请求报文的请求行中,或者位于所述第一http请求报文的请求头中,或者位于所述第一http请求报文的请求正文中。

可选的,所述表征所述第一序列化方式的标识以后缀的形式或以路径参数的形式位于所述第一http请求报文的请求行中的url中。

可选的,在所述客户端将所述第一http请求报文发送给服务端之后,所述方法还包括:

所述客户端接收所述服务端返回的响应报文,根据所述响应报文的状态行中的状态码确定所述响应报文携带序列化的响应数据;

所述客户端根据所述第一序列化方式从所述响应报文中获得响应数据。

可选的,在所述客户端将所述第一http请求报文发送给服务端之后,所述方法还包括:

所述客户端接收所述服务端发送的响应报文,根据所述响应报文的状态行中的状态码确定所述响应报文携带表征所述服务端支持的至少一种序列化方式的标识;

所述客户端从所述响应报文中获知所述服务端支持的至少一种序列化方式;所述客户端确定所述客户端及所述服务端共同支持的序列化方式;

所述客户端以第二序列化方式对所述请求数据进行序列化处理,获得序列化的请求数据,其中所述第二序列化方式为所述客户端及所述服务端共同支持的序列化方式中的任一序列化方式;

所述客户端生成第二http请求报文,所述第二http请求报文携带所述序列化的请求数据以及表征所述第二序列化方式的标识;

所述客户端将所述第二http请求报文发送给所述服务端。

实施例三

本发明实施例三提供一种数据传输方法,应用于上述实施例一中进行数据传输的服务端,所述方法包括:

所述服务端接收客户端发送的第一http请求报文,所述第一http请求报文携带序列化的请求数据以及表征所述客户端对请求数据进行序列化处理的第一序列化方式的标识;

所述服务端从所述第一http请求报文中获得所述标识,判断所述服务端是否支持所述标识表征的所述第一序列化方式;

如果所述服务端支持所述第一序列化方式,则所述服务端根据所述第一序列化方式从所述第一http请求报文中获得所述请求数据。

可选的,所述表征所述第一序列化方式的标识位于所述第一http请求报文的请求行中,或者位于所述第一http请求报文的请求头中,或者位于所述第一http请求报文的请求正文中。

可选的,所述表征所述第一序列化方式的标识以后缀的形式或以路径参数的形式位于所述第一http请求报文的请求行中的url中。

可选的,在所述服务端获得所述请求数据之后,所述方法还包括:

所述服务端对所述请求数据进行处理,得到响应数据;所述服务端以所述第一序列化方式对所述响应数据进行序列化处理,获得序列化的响应数据;

所述服务端生成第一http响应报文,所述第一http响应报文携带所述序列化的响应数据;

所述服务端将所述第一http响应报文发送给所述客户端。

可选的,在所述服务端判断所述服务端是否支持所述第一序列化方式之后,所述方法还包括:

如果所述服务端不支持所述第一序列化方式,则所述服务端确定所述服务端支持的至少一种序列化方式;

所述服务端生成第二http响应报文,所述第二http响应报文携带表征所述服务端支持的至少一种序列化方式的标识;

所述服务端将所述第二http响应报文发送给所述客户端。

实施例四

本发明实施例四提供一种数据传输装置,用于实施上述实施例二提供的所述数据传输方法。参照图5,所述数据传输装置包括:

处理单元401,用于:以第一序列化方式对请求数据进行序列化处理,获得序列化的请求数据;生成第一http请求报文,所述第一http请求报文携带所述序列化的请求数据以及表征所述第一序列化方式的标识;

发送单元402,用于:将所述第一http请求报文发送给服务端。

可选的,所述装置还包括:

接收单元403,用于:在所述发送单元402将所述第一http请求报文发送给所述服务端之后,接收所述服务端返回的响应报文;

所述处理单元401还用于:根据所述响应报文的状态行中的状态码确定所述响应报文携带序列化的响应数据;根据所述第一序列化方式从所述响应报文中获得响应数据。

可选的,所述装置还包括:

接收单元403,用于:在所述发送单元402将所述第一http请求报文发送给所述服务端之后,接收所述服务端发送的响应报文;

所述处理单元401还用于:根据所述响应报文的状态行中的状态码确定所述响应报文携带表征所述服务端支持的至少一种序列化方式的标识;从所述响应报文中获知所述服务端支持的至少一种序列化方式;确定所述装置及所述服务端共同支持的序列化方式;以第二序列化方式对所述请求数据进行序列化处理,获得序列化的请求数据,其中所述第二序列化方式为所述装置及所述服务端共同支持的序列化方式中的任一序列化方式;生成第二http请求报文,所述第二http请求报文携带所述序列化的请求数据以及表征所述第二序列化方式的标识;

所述发送单元402还用于:将所述第二http请求报文发送给所述服务端。

可选的,所述表征所述第一序列化方式的标识位于所述第一http请求报文的请求行中,或者位于所述第一http请求报文的请求头中,或者位于所述第一http请求报文的请求正文中。

可选的,所述表征所述第一序列化方式的标识以后缀的形式或以路径参数的形式位于所述第一http请求报文的请求行中的url中。

以上各个单元所执行操作的具体实现方式可以参照上述实施例二中由客户端执行的各对应步骤的具体实现方式,本发明实施例不再赘述。

实施例五

本发明实施例五提供一种数据传输装置,用于实施上述实施例三提供的所述数据传输方法。参照图6,所述数据传输装置包括:

接收单元501,用于:接收客户端发送的第一http请求报文,所述第一http请求报文携带序列化的请求数据以及表征所述客户端对请求数据进行序列化处理的第一序列化方式的标识;

处理单元502,用于:从所述第一http请求报文中获得所述标识,判断所述装置是否支持所述标识表征的所述第一序列化方式;在所述装置支持所述第一序列化方式时,根据所述第一序列化方式从所述第一http请求报文中获得所述请求数据。

可选的,所述处理单元502还用于:对所述请求数据进行处理,得到响应数据;以所述第一序列化方式对所述响应数据进行序列化处理,获得序列化的响应数据;生成第一http响应报文,所述第一http响应报文携带所述序列化的响应数据;

所述装置还包括发送单元503,用于:将所述第一http响应报文发送给所述客户端。

可选的,所述处理单元502还用于:在所述装置不支持所述第一序列化方式时,确定所述装置支持的至少一种序列化方式;生成第二http响应报文,所述第二http响应报文携带表征所述装置支持的至少一种序列化方式的标识;

所述装置还包括发送单元503,用于:将所述第二http响应报文发送给所述客户端。

可选的,所述表征所述第一序列化方式的标识位于所述第一http请求报文的请求行中,或者位于所述第一http请求报文的请求头中,或者位于所述第一http请求报文的请求正文中。

可选的,所述表征所述第一序列化方式的标识以后缀的形式或以路径参数的形式位于所述第一http请求报文的请求行中的url中。

以上各个单元所执行操作的具体实现方式可以参照上述实施例三中由服务端执行的各对应步骤的具体实现方式,本发明实施例不再赘述。

实施例六

本发明实施例六提供一种客户端,参照图7,所述客户端包括:

至少一个处理器601;以及,

与所述至少一个处理器通信连接的存储器602、通信接口603;其中,

所述存储器602存储有可被所述至少一个处理器601执行的指令,所述至少一个处理器601通过执行所述存储器602存储的指令,利用所述通信接口603执行上述实施例二提供的所述数据传输的方法。

实施例七

本发明实施例七提供一种服务端,参照图8,所述服务端包括:

至少一个处理器701;以及,

与所述至少一个处理器通信连接的存储器702、通信接口703;其中,

所述存储器702存储有可被所述至少一个处理器701执行的指令,所述至少一个处理器701通过执行所述存储器702存储的指令,利用所述通信接口703执行上述实施例三提供的所述数据传输的方法。

本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:

1、对于大多数客户端发送的请求报文,服务端都能够进行反序列化处理从而得到请求数据,所以针对大部分的数据交互都不再需要进行交互前的报文序列化方式的协商过程,解决了客户端与服务端需要在数据交互前协商报文序列化方式导致的网络复负载量大的技术问题,提高了客户端与服务端的数据交互效率。

2、对于极少数客户端发送的请求报文,服务端如果不支持客户端发送的请求报文的序列化方式,服务端就将服务端支持的至少一种序列化方式返回给客户端,然后客户端从服务端支持的至少一种序列化方式中选择出客户端与服务端共同支持的序列化方式再次发起数据交互,因此本发明实施例在减轻网络负载的同时保证了数据交互的成功率。

3、由于本发明实施例中的服务端能够支持本领域常用的序列化方式,因此本发明实施例可以不需要针对客户端开发多种报文序列化方式去对接不同的服务端,节约了服务端的开发成本。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1